советники на ренко не запускаются. решение

 

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

дело в том что данный советник написан по другому и мне не понятен код.

дорогие программисты к вам просьба. пожалуйста внедрите этот код в код советника ПРАВИЛЬНО (я попытался но вышло НЕ ПРАВИЛЬНО) чтоб он торговал на ренко.

вот код

int init()
{
      logFileInit();
      if (useNotStandartTF == true) // вычислялся в logFileInit()
      {     // при нестандартном ТФ именно everyTick() будет выполнять на себе функцию start()
            while (!IsStopped())
            {     // пока тебя ничто не остановит, через 1.5 секунды прикидывайся Новым Тиком
                  everyTick();
                  Sleep(1500);
            }
      }
      return(0);
}

int start()
{     
      everyTick();
}
//+------------------------------------------------------------------+
//| Каждый тик :-)                                                   |
//+------------------------------------------------------------------+
int everyTick()
{
      RefreshRates();
      // ну и дальше все что в START() должно было быть
}

 

Автономный график надо автономно оновлять. Тогда советник запустится.

Можно обновлять неавтономно. В библиотеке есть функции для этого. Раздел 4.7.

 
Zhunko:

Автономный график надо автономно оновлять. Тогда советник запустится.

Можно обновлять неавтономно. В библиотеке есть функции для этого. Раздел

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

Так делаю:

#include <ServicesMT4.mqh>

void init()
 {// Включаем автономное обновление графика.
  ServiceRefreshChart(WindowHandle(Symbol(), 0), 100);
 }

int start()
 {// Если советник зацикленный, как ниже, то так:
  ServiceStopRefreshChart(WindowHandle(Symbol(), 0));
  while (!IsStopped())
   {
    ...
    Sleep(1000);
   {
 }
 
Zhunko:

Так делаю:

незнаю... не понимаю... вообще... если не трудно можете прописать как надо(по вашему усмотрению, у вас то опыта навалом) т.е. чтоб работал на ренко и выложить? очень прошу
 
maksat-akmol:
незнаю... не понимаю... вообще... если не трудно можете прописать как надо(по вашему усмотрению, у вас то опыта навалом) т.е. чтоб работал на ренко и выложить? очень прошу

Выше написал.

Дело не в ренко. Любой автономный график надо обновлять, чтобы на нём работали советник и индикаторы.

 

Есть вполне стандартное решение:

#include <WinUser32.mqh>

#include <stdlib.mqh>



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

#import "user32.dll"

int RegisterWindowMessageA(string lpString);

#import

extern bool EmulateOnLineChart = true;

extern bool StrangeSymbolName = false;

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

int HstHandle = -1, LastFPos = 0, MT4InternalMsg = 0;

string SymbolName;

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

void UpdateChartWindow() {

static int hwnd = 0;

if(hwnd == 0) {

hwnd = WindowHandle(SymbolName, RenkoTimeFrame);

if(hwnd != 0) Print("Chart window detected");

}


if(EmulateOnLineChart && MT4InternalMsg == 0)

MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message");


if(hwnd != 0) if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == 0) hwnd = 0;

if(hwnd != 0 && MT4InternalMsg != 0) PostMessageA(hwnd, MT4InternalMsg, 2, 1);


return;

}

вызывать функцию можно где то в конце start() советника который строит данные для ренко, после того как построились все данные в offline графике.

// где SymbolName - название символа offline графика

// RenkoTimeFrame - таймфрейм offline графика

 
Zhunko:

Выше написал.

Дело не в ренко. Любой автономный график надо обновлять, чтобы на нём работали советник и индикаторы.


пытаюсь. не выходит каждый раз новые ошибки в компиляции. если устранить ошибку (каким то образом) они снова появляются.
 
testopal:

Есть вполне стандартное решение:

#include <WinUser32.mqh>

#include <stdlib.mqh>



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

#import "user32.dll"

int RegisterWindowMessageA(string lpString);

#import

extern bool EmulateOnLineChart = true;

extern bool StrangeSymbolName = false;

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

int HstHandle = -1, LastFPos = 0, MT4InternalMsg = 0;

string SymbolName;

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

void UpdateChartWindow() {

static int hwnd = 0;

if(hwnd == 0) {

hwnd = WindowHandle(SymbolName, RenkoTimeFrame);

if(hwnd != 0) Print("Chart window detected");

}


if(EmulateOnLineChart && MT4InternalMsg == 0)

MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message");


if(hwnd != 0) if(PostMessageA(hwnd, WM_COMMAND, 0x822c, 0) == 0) hwnd = 0;

if(hwnd != 0 && MT4InternalMsg != 0) PostMessageA(hwnd, MT4InternalMsg, 2, 1);


return;

}

вызывать функцию можно где то в конце start() советника который строит данные для ренко, после того как построились все данные в offline графике.

// где SymbolName - название символа offline графика

// RenkoTimeFrame - таймфрейм offline графика


так тоже не получится експерт который строит ренко не редактируется т.е. метаедитор ничего не видит
 
maksat-akmol:

пытаюсь. не выходит каждый раз новые ошибки в компиляции. если устранить ошибку (каким то образом) они снова появляются.
Ошибки-то где и какие? Ни одну не увидел.
 
maksat-akmol:

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

тогда создай советник, впиши туда функцию, укажи правильные SymbolName и RenkoTimeFrame. и закинь на какой нить график.