вопросы и ответы

 
Знаете хотел бы создать эту тему так как не понял как и кому на этом сайте задать вопрос и кто ответит :))) может что-то не понял? пожалуйста если кто знает скажите, а то вопросов много собралось
 

Правильно составленный вопрос - половина ответа....

 

меня интересуют следующие строки кода

double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
//…подсчитаем количество ордеров и перенесем стоплосс
int oBuy=0,oSell=0;
for(int i=OrdersTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{if(OrderType()==OP_BUY)
{double f1=NormalizeDouble(iFractals(NULL,0,MODE_LOWER,3),Digits);
if(f1>0 && OrderStopLoss()<f1 && f1<Bid) EditOrder(OrderTicket(),f1);}
if(OrderType()==OP_SELL)
{double f2=NormalizeDouble(iFractals(NULL,0,MODE_UPPER,3),Digits);
if(f2>0 && OrderStopLoss()>f2 && f2>Ask) EditOrder(OrderTicket(),f2);}
if(OrderType()==OP_BUY) oBuy++;

if(OrderType()==OP_SELL) oSell++;}

Пожалуйста опишите кто может каждую строку Спасибо!

 

Строки определенно вырваны из контекста - приведите весть код, ... и еще, код вставляется через кнопочку SRC

 
amirs >>:

меня интересуют следующие строки кода

double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1);
//…подсчитаем количество ордеров и перенесем стоплосс
int oBuy=0,oSell=0;
for(int i=OrdersTotal()-1;i>=0;i--)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{if(OrderType()==OP_BUY)
{double f1=NormalizeDouble(iFractals(NULL,0,MODE_LOWER,3),Digits);
if(f1>0 && OrderStopLoss()<f1 && f1<Bid) EditOrder(OrderTicket(),f1);}
if(OrderType()==OP_SELL)
{double f2=NormalizeDouble(iFractals(NULL,0,MODE_UPPER,3),Digits);
if(f2>0 && OrderStopLoss()>f2 && f2>Ask) EditOrder(OrderTicket(),f2);}
if(OrderType()==OP_BUY) oBuy++;

if(OrderType()==OP_SELL) oSell++;}

Пожалуйста опишите кто может каждую строку Спасибо!


а зачем вам это?
 
amirs >>:

Пожалуйста опишите кто может каждую строку Спасибо!


double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1); // В переменную IZZ записываем значение индикатора Зиг заг на предыдущей свечке.
//…подсчитаем количество ордеров и перенесем стоплосс
int oBuy=0,oSell=0;
for(int i=OrdersTotal()-1;i>=0;i--) // Цикл в котором перебираем все открытые сделки.
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Выбираем сделку с которой собираемся работать
{if(OrderType()==OP_BUY) // Если эта сделка Бай, для неё следующие две строчки кода.
{double f1=NormalizeDouble(iFractals(NULL,0,MODE_LOWER,3),Digits); //в переменную f1 записываем значение нижнего фрактала. И это значение округляем до определенного числа после запятой. (цисло знаков после запятой в константе Digits)
if(f1>0 && OrderStopLoss()<f1 && f1<Bid) EditOrder(OrderTicket(),f1);} // Если переменная f1 < больше нуля и Стоп Лос выбранного ордера меньше f1 и f1 меньше цены бид, тогда наверное выставляем стоп лос на уровень ф1
if(OrderType()==OP_SELL) // аналогично для сделки Селл
{double f2=NormalizeDouble(iFractals(NULL,0,MODE_UPPER,3),Digits);
if(f2>0 && OrderStopLoss()>f2 && f2>Ask) EditOrder(OrderTicket(),f2);}
if(OrderType()==OP_BUY) oBuy++; // Здесь и строчкой ниже идет подсчет, мколько открыто сделок на Бай, сколько на Селл. И количество записывается в переменные oBuy и oSell

if(OrderType()==OP_SELL) oSell++;}

 
serler2 >>:

double lZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,1); // В переменную IZZ записываем значение индикатора Зиг заг на предыдущей свечке.
//…подсчитаем количество ордеров и перенесем стоплосс
int oBuy=0,oSell=0;
for(int i=OrdersTotal()-1;i>=0;i--) // Цикл в котором перебираем все открытые сделки.
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) // Выбираем сделку с которой собираемся работать
{if(OrderType()==OP_BUY) // Если эта сделка Бай, для неё следующие две строчки кода.
{double f1=NormalizeDouble(iFractals(NULL,0,MODE_LOWER,3),Digits); //в переменную f1 записываем значение нижнего фрактала. И это значение округляем до определенного числа после запятой. (цисло знаков после запятой в константе Digits)
if(f1>0 && OrderStopLoss()<f1 && f1<Bid) EditOrder(OrderTicket(),f1);} // Если переменная f1 < больше нуля и Стоп Лос выбранного ордера меньше f1 и f1 меньше цены бид, тогда наверное выставляем стоп лос на уровень ф1
if(OrderType()==OP_SELL) // аналогично для сделки Селл
{double f2=NormalizeDouble(iFractals(NULL,0,MODE_UPPER,3),Digits);
if(f2>0 && OrderStopLoss()>f2 && f2>Ask) EditOrder(OrderTicket(),f2);}
if(OrderType()==OP_BUY) oBuy++; // Здесь и строчкой ниже идет подсчет, мколько открыто сделок на Бай, сколько на Селл. И количество записывается в переменные oBuy и oSell

if(OrderType()==OP_SELL) oSell++;}

Большое спасибо :))) я недавно занимаюсь программированием на MQL4 Многое еще не понятно
 
Сергей ! Если можете еще раз помогите описать
if(lZZ>0 && oBuy+oSell==0)
   {i=2;
    while(iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i)==0) i++;
    double fZZ=iCustom(NULL,0,"ZigZag",ExtDepth,ExtDeviation,ExtBackstep,0,i);
    double Lot=GetLot(MaxRisk);
    if(Lot==0) {Alert("Недостаточно средств!");return(0);}
    double tp=0;
    double sl=0;
    if(lZZ>fZZ)
      {sl=NormalizeDouble(lZZ+StopLoss*Point,Digits);
       if(TakeProfit>0) tp=NormalizeDouble(Bid-(sl-Bid)*TakeProfit,Digits);
       NewOrder(OP_SELL,Lot,0,tp,sl);}
    if(lZZ<fZZ)
      {sl=NormalizeDouble(lZZ-StopLoss*Point,Digits);
       if(TakeProfit>0) tp=NormalizeDouble(Ask+(Ask-sl)*TakeProfit,Digits);
       NewOrder(OP_BUY,Lot,0,tp,sl);}}
return(0);}

непонятно i=2

Спасибо большое!

 
А мне сто баксов пожалуйста
 

Чтоб разобраться с MQL4 не стоит разбирать чужие коды.

Начните писать свои.

Напишите советника которые торгует по машкам, напишите скрипты, которые открывают закрывают сделки.

 
serler2 >>:

Чтоб разобраться с MQL4 не стоит разбирать чужие коды.

Начните писать свои.

Напишите советника которые торгует по машкам, напишите скрипты, которые открывают закрывают сделки.



Советник мне понравился именно тем что у него есть трейлинг стоп, но почему-то перенос SL производиться не сразу, проверял на тестере. На его базе, есть перенос SL по фракталам, хотел написать советника который работает по фракталам. не знаю как написать:

если предидущий фрактал MODE_UPPER < нового фрактала MODE_UPPER

и предидущий фрактал MODE_LOWER < нового MODE_LOWER
то открыть buy
Причина обращения: