Как кодировать? - страница 318

 
mladen:
dasio Он уже перебирает все часы текущего дня. Я поместил iClose() и iOpen() просто как пример вызова из таймфрейма, отличного от 1 часа. Если вы хотите получить доступ к дню, отличному от текущего, то замените "0" в datetime startTime=iTime(NULL,PERIOD_D1,0); на любой день, за который вы хотите получить данные.

Спасибо.

Возможно, мне нужно учиться.

Я не понимаю, как я могу сделать отдельный расчет для свечей 00:00 - 01:00 - 02:00 и т.д.

Извините

 

Проблемы с сигналом

Mladen

Спасибо, я посмотрел внимательно....Im все еще экспериментируя код.Я буду уведомлять, когда через.

 

dasio

Эта часть

int i=iBarShift(NULL,PERIOD_H1,startTime);

устанавливает i на сдвиг первой часовой свечи в указанный день (именно поэтому было добавлено datetime startTime=iTime(NULL,PERIOD_D1,0);- чтобы узнать время начала дня), после чего перебирает значения каждого часового бара, пока день не останется неизменным (например, в пятницу перебирает не 24 раза, а 22 или 23, в зависимости от брокера).

Если вам нужно нащупать какой-то массив, который должен быть сделан немного по-другому, сообщите мне, если это была ваша идея).

dasio:
Спасибо.

Возможно, мне нужно учиться.

Я не понимаю, как я могу сделать отдельный расчет для 00:00 свечи - 01:00 - 02:00 и т.д.

Извините
 

Как сделать экспертную остановку?

Здравствуйте кодеры,

Как сделать несколько дополнительных строк кодирования, чтобы эксперт останавливался после выигрышной сделки?

Пипсы в мешке, тогда сделайте стоп эксперта...

Большое спасибо

Tomcat98

 
mladen:
dasio

Эта часть

int i=iBarShift(NULL,PERIOD_H1,startTime);

устанавливает i на сдвиг первой часовой свечи в указанный день (именно поэтому было добавлено datetime startTime=iTime(NULL,PERIOD_D1,0);- чтобы узнать время начала дня), после чего он будет перебирать значения каждого часового бара, пока день не останется неизменным (например, в пятницу он будет перебирать не 24 раза, а 22 или 23, в зависимости от вашего брокера).

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

Спасибо,

Я понимаю немного больше.

Однако мне это нужно для примера.

Я должен связать с переменными что-то вроде этого:

(свеча 00:00 ; Переменная = Close+High

свеча 01:00 ; Переменная1 = Close+Open

свеча 02:00 ; Переменная2 = high+low;

И так далее для всех часовых свечей дня.

Итак, переменные определены как двойные.

После этого я должен произвести некоторые математические вычисления с переменной и связать результат с буфером (это не проблема).

Проблема для меня заключается в ассоциации переменных.....

 

Еще одна проблема... Я пытаюсь изучить программирование и иногда (только иногда?) мне нужна помощь.

Если у меня есть ea, которая размещает два отложенных ордера, как я могу закодировать, если я хочу, чтобы при открытии одного отложенного ордера другой отложенный ордер был удален?

Спасибо

 

Вы должны использовать 2 цикла:

Сначала вы должны подсчитать ордера, чтобы выяснить, стал ли какой-либо из отложенных ордеров "обычным" ордером (поэтому вы должны сделать обычный подсчет ордеров, имеющих тип OP_BUY или OP_SELL, и, если хотите, подсчитать остальные ордера тоже).

Если есть открытые ордера, то нужно снова выполнить цикл и удалить все ордера, которые не являются ордерами типа OP_BUY или OP_SELL.

Код может быть примерно таким:

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
Другая проблема... Я пытаюсь изучить программирование и иногда (только иногда?) мне нужна помощь.

Если у меня есть ea, которая размещает два отложенных ордера, как я могу закодировать, чтобы при открытии одного отложенного ордера другой отложенный ордер удалялся?

Спасибо
 

Закрывать все позиции на продажу или все позиции на покупку только (при достижении целевой прибыли)

Привет всем. Я новичок в FX и советниках. Я пытался найти советника для "закрыть все продажи" или "закрыть все покупки" при достижении цели, но не смог найти. Я нашел только закрытие всех продаж или всех покупок без "HIT TARGET или PROFIT". Возможно ли, чтобы кто-нибудь помог мне создать 1 советника со следующими функциями:-.

1)Закрывать все продажи, если прибыль достигла цели X.

2)Закрывать все покупки, если прибыль достигла цели X.

3)Включить трейлинг стоп (если возможно, если нет, то без проблем).

4) Не закрывать, если эквити или уровень маржи меньше X %, если закрыть все покупки или закрыть все продажи (если возможно, если нет проблем).

Примечание:

Если нет 4, то это довольно сложно закодировать, поэтому просто выберите 1, 2 и 3 в одном советнике.

Если нет 4 и 3 сложно, поэтому просто нет 1 и 2 в одном советнике.

Если все еще сложно, просто создайте №1 и №2 отдельно.

Буду очень признателен, если кто-нибудь сможет предоставить мне вышеуказанную информацию.

Заранее спасибо

 
pipsmonitor:
Привет всем. Я новичок в FX и советниках. Я пытался найти советника для "закрыть все продажи" или "закрыть все покупки" при достижении цели, но не смог найти. Я нашел только закрытие всех продаж или всех покупок без "HIT TARGET или PROFIT". Возможно ли, чтобы кто-нибудь помог мне создать советника с перечисленными ниже функциями:-.

1)Закройте все продажи, если прибыль достигла цели X.

2)Закройте все покупки, если прибыль достигла цели X.

3) Включите трейлинг-стоп (если возможно, если нет - нет проблем).

4) Не закрывать, если эквити или уровень маржи меньше X %, если закрыть все покупки или закрыть все продажи (если возможно, если нет проблем).

Примечание:

Если нет 4, то это довольно сложно закодировать, поэтому просто выберите 1, 2 и 3 в одном советнике.

Если нет 4 и 3 сложно, поэтому просто нет 1 и 2 в одном советнике.

Если все еще сложно, просто создайте 1 и 2 отдельно.

Буду очень признателен, если кто-нибудь сможет предоставить мне вышеуказанную информацию.

Заранее спасибо

Привет Pipsmonitor,

Возможно, вы найдете что-то здесь, на этой странице https://www.mql5.com/en/forum/181179 также сделал поиск goggle на панели заголовка форума использовал закрыт на прибыль нашел некоторые там вы можете быть в состоянии использовать, также может попробовать поиск трейлинг Eas, знаю о Ema трейлинг и BBand стоп трейлинг Ea.

 

Здравствуйте,

Я пытаюсь объединить эти два кода, но у меня с этим проблемы.

Мне нужно, чтобы при исполнении одного отложенного ордера другой отменялся.

Спасибо за вашу отзывчивость

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}
Причина обращения: