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

 

Спасибо, Калензо,

Я пробовал с OP_BUYLIMIT, но это не работает.

Я попробую с OP_BUYSTOP.

 

быстрый вопрос по кодированию

Как вы помещаете горизонтальную линию на экране на среднем значении (всех цен закрытия)? Есть ли для этого специальный код?

 

простой пробойный советник

//+------------------------------------------------------------------+

//| SimpleBreakoutEA.mq4 |

//| |

//| |

//+------------------------------------------------------------------+

#property copyright "jjk2"

#property link ""

//---- input parameters

extern int ____TIME_RANGE____;

extern int TimeRange = 1; // # of Hours to look back from TimeEnd. ex) if breakout is @ 22:00 GMT to 23:00 GMT. Total TimeRange to lookback is 8 hrs.

extern int TimeBegin = 22;

extern int TimeEnd = 23;

extern int CancelTime = 20; // ALL REMAINING ORDERS WILL BE CANCELED AT THIS INDICATED TIME.

extern int ______FILTERS______;

extern int TriggerFilter = 0;

extern bool AllowBreakEven = True;

extern int ______ORDERS______;

extern double Lots = 0.1;

extern int StopLoss = 50;

extern int TakeProfit = 100;

extern int Slippage = 2;

extern int MagicNumber = 23423;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

int start()

{

// OPEN ORDERS @ HIGH/LOW from TIMEBEGIN to TimeEND

if (Hour() >= TimeBegin-1 && Hour() >= TimeEnd)

{

int HH = iHighest(NULL, 0, MODE_HIGH,TimeRange,0);

int LL = iLowest(NULL, 0, MODE_LOW,TimeRange,0);

}

double SL_High = Ask - (StopLoss * Point);

double SL_Low = Bid + (StopLoss*Point);

double TP_High = Ask + (TakeProfit*Point);

double TP_Low = Bid - (TakeProfit*Point);

if ( Ask > HH + TriggerFilter) OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL_High, TP_High, "Breakout Buy", MagicNumber, NULL, Blue);

if ( Bid < LL + TriggerFilter) OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL_Low, TP_Low, "Breakout Sell", MagicNumber, NULL, Red);

// MOVE SL @ BreakEven if allowed. MarketPrice distance Open Price > stop*point, then stop must equal to MarketPrice - Stop*point as new stoploss.

int total = 0;

if ( AllowBreakEven == True )

{

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

{

OrderSelect(total, SELECT_BY_POS);

if ( Bid - OrderOpenPrice() > SL_High*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - SL_High*Point, OrderTakeProfit(),0, CLR_NONE);

if ( OrderOpenPrice() - Ask > SL_Low*Point )

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + SL_Low*Point , OrderTakeProfit(),0, CLR_NONE);

}

}

return(0);

}

//+------------------------------------------------------------------+

по какой-то причине он не работает.... кто-нибудь знает почему?

 
 

Как превратить индикатор в советника?

Здравствуйте, могу ли я узнать, как превратить индикатор в советника?

Многие индикаторы имеют знак стрелки при наступлении определенных условий, и я хотел бы протестировать их с помощью советника.

Я бы хотел, чтобы советник совершал сделку в соответствии с образовавшейся стрелкой.

Кто-нибудь может мне помочь? Спасибо.

 

Вот это в соответствии со стрелочным указателем

https://www.mql5.com/en/forum/173249/page51

 

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

Кто-нибудь может помочь? Спасибо.

 
Файлы:
envelopes.mq4  3 kb
 

Структура кода

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

Я новичок в Metatrader, но очень опытен в программировании. Я создал несколько примеров советников и несколько немного сложных индикаторов в MT. Не совсем понятно, как структурировать довольно сложный советник. Я хочу, чтобы советник вызывал некоторые "сигнальные" функции для проверки различных условий установки.

Как мне закодировать эти функции?

1. Как "встроенные" функции в советнике

2. Как "отдельные" индикаторы, которые возвращают значение, а не выводят его на экран?

3. какую-то другую "отдельную" функцию для вызова, например, вызов iMA.

Если я выберу вариант 1, может ли встроенная функция в советнике просмотреть последние 200 баров с помощью Close и вызвать iMA?

Альтернатива 2 - это нормально? При кодировании индикатора обрабатываются все "доступные" бары, что, конечно, не нужно для советника.

Альтернатива 3 кажется мне логичным выбором, но я не уверен, как ее структурировать, чтобы она работала в бэктестинге, и что мне нужно передать ей, и к чему функция имеет доступ по умолчанию, как, например, Close.

В качестве примера того, что мне нужно установить в функции "signal", можно привести текущий тренд и время его начала. Я закодировал это в индикаторе, так что я знаю, как сделать фактический код.

Благодарен за любой совет.

Ингвар

 
ingvar_e:
Привет,

Я новичок в Metatrader, но очень опытен в программировании. Я создал несколько примеров советников и несколько немного сложных индикаторов в MT. Не совсем понятно, как структурировать довольно сложный советник. Я хочу, чтобы советник вызывал несколько "сигнальных" функций для проверки различных условий установки.

Как мне закодировать эти функции?

1. Как "встроенные" функции в советнике

2. Как "отдельные" индикаторы, которые возвращают значение, а не выводят его на экран?

3. какую-то другую "отдельную" функцию для вызова, например, вызов iMA.

Если я выберу вариант 1, может ли встроенная функция в советнике просмотреть последние 200 баров с помощью Close и вызвать iMA?

Альтернатива 2 - это нормально? При кодировании индикатора обрабатываются все "доступные" бары, что, конечно, не нужно для советника.

Альтернатива 3 кажется мне логичным выбором, но я не уверен, как ее структурировать, чтобы она работала в бэктестинге, и что мне нужно передать ей, и к чему функция имеет доступ по умолчанию, как, например, Close.

В качестве примера того, что мне нужно установить в функции "signal", можно привести текущий тренд и время его начала. Я закодировал это в индикаторе, так что я знаю, как сделать фактический код.

Буду благодарен за любой совет.

Ингвар

Возможно, вы уже знаете, как это сделать, так что извините, если это так.

Скользящая средняя текущего бара:

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0);

Скользящее среднее 200 баров назад.

iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,200);

Вы можете вызывать скользящую среднюю с любого бара, от текущего до любого бара в прошлом.