Trendline Trader
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «trendline trader.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Trendline Trader — советник для MetaTrader 4, который строит на графике трендовые линии и использует их уровни для размещения отложенных ордеров. При активации соответствующих настроек создаются линии BuyStop, SellStop, BuyLimit и SellLimit вместе с уровнями стоп-лосса и тейк-профита.
Советник рассчитывает объём сделки на основе свободных средств, параметра риска и коэффициента уменьшения лота при серии убыточных сделок. Он также отслеживает открытые ордера и корректирует их цены, стоп-лоссы и тейк-профиты в соответствии с текущими позициями трендовых линий.
Торговые операции выполняются только при включении параметра AllowLiveTrade. В противном случае EA ограничивается построением линий и выводом информации в журнал.
Настройки программы
| Настройка | Описание |
|---|---|
| true allows orders to be placed (AllowLiveTrade) | AllowLiveTrade — Разрешает размещение ордеров на торговом счёте |
| true allows stoporder trendlines to be plotted (StopOrderTLs) | StopOrderTLs — Разрешает построение трендовых линий для стоп-ордеров |
| true allows limitorder trendlines to be plotted (LimitOrderTLs) | LimitOrderTLs — Разрешает построение трендовых линий для лимитных ордеров |
| Lots | Lots — Базовый объём сделки |
| MaximumRisk | MaximumRisk — Параметр риска для расчёта оптимального объёма |
| DecreaseFactor | DecreaseFactor — Коэффициент уменьшения лота при наличии убыточных сделок |
| Slippage | Slippage — Допустимое проскальзывание в пунктах |
Поиск по коду файла
extern bool AllowLiveTrade =false;//true allows orders to be placed
extern bool StopOrderTLs =false;//true allows stoporder trendlines to be plotted
extern bool LimitOrderTLs =false;//true allows limitorder trendlines to be plotted
extern double Lots =0.1;
extern double MaximumRisk =0.02;
extern double DecreaseFactor =3;
extern double Slippage =3;
double LotsOptimized()
{
double lot=Lots;
int orders=HistoryTotal(); // history orders total
int losses=0; // number of losses orders without a break
lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error in history!"); break; }
if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
}
if(lot<0.1) lot=0.1;
return(lot);
}
int init() {
// код доступен только после оплаты
}//end init
int deinit() { Print("Deinitialising"); return(0); }
int start()
{
// код доступен только после оплаты
}
if(StopOrderTLs) {
double BuyStop =ObjectGetValueByShift("BuyStop",0);
double BuyStopSL =ObjectGetValueByShift("BuyStopSL",0);
double BuyStopTP =ObjectGetValueByShift("BuyStopTP",0);
double SellStop =ObjectGetValueByShift("SellStop",0);
double SellStopSL=ObjectGetValueByShift("SellStopSL",0);
double SellStopTP=ObjectGetValueByShift("SellStopTP",0);
double bs; bs =NormalizeDouble(BuyStop,4);
double bssl; bssl =NormalizeDouble(BuyStopSL,4);
double bstp; bstp =NormalizeDouble(BuyStopTP,4);
double ss; ss =NormalizeDouble(SellStop,4);
double sssl; sssl =NormalizeDouble(SellStopSL,4);
double sstp; sstp =NormalizeDouble(SellStopTP,4);
}//end if
if(LimitOrderTLs) {
double BuyLimit =ObjectGetValueByShift("BuyLimit",0);
double BuyLimitSL =ObjectGetValueByShift("BuyLimitSL",0);
double BuyLimitTP =ObjectGetValueByShift("BuyLimitTP",0);
double SellLimit =ObjectGetValueByShift("SellLimit",0);
double SellLimitSL=ObjectGetValueByShift("SellLimitSL",0);
double SellLimitTP=ObjectGetValueByShift("SellLimitTP",0);
double bl; bl =NormalizeDouble(BuyLimit,4);
double blsl; blsl =NormalizeDouble(BuyLimitSL,4);
double bltp; bltp =NormalizeDouble(BuyLimitTP,4);
double sl; sl =NormalizeDouble(SellLimit,4);
double slsl; slsl =NormalizeDouble(SellLimitSL,4);
double sltp; sltp =NormalizeDouble(SellLimitTP,4);
}//end if
if(Minute()==0){
Print(Symbol()," BuyStop:",bs," BuyStopSL:",bssl," BuyStopTP:",bstp,
" SellStop:",ss," SellStopSL:",sssl," SellStopTP:",sstp);
Print(" BuyLimit:",bl," BuyLimitSL:",blsl," BuyLimitTP:",bltp,
" SellLimit:",sl," SellLimitSL:",slsl," SellLimitTP:",sltp);
}//end if
if(OrdersTotal()==0) { int BS=0,SS=0,BL=0,SL=0; }
if(OrdersTotal()>0) { int cnt,total=OrdersTotal();
for(cnt=0;cnt<total;cnt++) {
OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==11) { BS=OrderTicket(); }
if(OrderMagicNumber()==22) { SS=OrderTicket(); }
if(OrderMagicNumber()==33) { BL=OrderTicket(); }
if(OrderMagicNumber()==44) { SL=OrderTicket(); }
}//end for
}//end if
int ticket;
if(AllowLiveTrade) {
if(StopOrderTLs) {
if(BS==0) {
ticket=OrderSend(Symbol(),
OP_BUYSTOP,
LotsOptimized(),
bs,
Slippage,
bssl,
bstp,
"TL trader buystop",
11,
0,
Green);
if(ticket>0) {
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) {
BS=ticket;
Print(ticket); }//end if(OrderSelect
else PПоказано первые 50% кода (символов: 10200)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.