Почему я не могу торговать с помощью индикатора?

 

Вот код, который я попробовал:

 
#property indicator_chart_window
#include <Button.mqh>
#include <Trade\Trade.mqh>

CTrade trade;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   ButtonCreate("but","but",10,10);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent(const int       id,       // event ID
                  const long&     lparam,   // long type event parameter
                  const double&   dparam,   // double type event parameter
                  const string&   sparam    // string type event parameter
                 )
  {
   if(id==CHARTEVENT_OBJECT_CLICK && ObjectGetInteger(ChartID(),sparam,OBJPROP_TYPE)==OBJ_BUTTON)
  {
  trade.Buy(0.01);
  }
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Я получаю неизвестную ошибку в журнале

Пожалуйста, дайте мне знать, как это исправить.

 
jaffer wilson:

Вот код, который я попробовал:


Я получаю неизвестную ошибку в журнале

Пожалуйста, дайте мне знать, как это исправить.

В индикаторах запрещены торговые функции. Однозначно и бесповоротно.
 

Artyom Trishkin

В индикаторах запрещены  торговые функции  . Однозначно и бесповоротно.

Спасибо за ваш ответ, @ Артём Тришкин .

Но я хочу использовать кнопку в тестере стратегий, и индикатор это позволяет. Но это не позволяло торговать.

Я все еще пытаюсь научиться использовать вашу библиотеку.

 

вот выкладывал код @Alexey Volchanskiy

https://www.mql5.com/ru/forum/171668#comment_10574757

но учтите, что в тестере не приходят события OnChartEvent() , это значит,что в тестере нужно проверять состояние кнопок по приходу тика

 
Igor Makanu :

вот выкладывал код  @Alexey Volchanskiy

https://www.mql5.com/ru/forum/171668#comment_10574757

но учтите, что в тестере не приходят события OnChartEvent() , это значит,что в тестере нужно проверять состояние кнопок по приходу тика

Код не работает вообще, я попробовал. Было более 100 ошибок.

 
Вам правильно ответили, из индикаторов нельзя торговать, делайте советником.
 
Igor Makanu:

вот выкладывал код @Alexey Volchanskiy

https://www.mql5.com/ru/forum/171668#comment_10574757

но учтите, что в тестере не приходят события OnChartEvent() , это значит,что в тестере нужно проверять состояние кнопок по приходу тика

Не знаю как в пятёрке(не работаю с ней), а в четвёрке в индикаторах события OnChartEvent() работают и могут быть использован при тестировании в визуальном режиме. Можете посмотреть реализацию в этой ветке. Там в конце ветки я выкладывал коды.

Перетаскивание SL и TP в тестере.
Перетаскивание SL и TP в тестере.
  • 2016.02.14
  • www.mql5.com
Автоматические торговые системы: Перетаскивание SL и TP в тестере.
 
khorosh:

Не знаю как в пятёрке(не работаю с ней), а в четвёрке в индикаторах события OnChartEvent() работают и могут быть использован при тестировании в визуальном режиме. Можете посмотреть реализацию в этой ветке. Там в конце ветки я выкладывал коды.

я не знаю, что сейчас в МТ4 творится, в принципе не важно - для определения состояния CButton - достаточно по приходу тика в тестере проверить состояние с помощью вызова метода Pressed()