Помогите отловить ошибку mt4+cpp(dll)cassandra driver+cassndra db

 

Код советника

#property version   "1.0"

#import "kernel32.dll"   

int GetModuleHandleA(string lpString);

int FreeLibrary(int hModule);  

int LoadLibraryA(string lpString);

 

#import "MATHLIBRARY.dll"  

int savetick(char&[],int pIdSymbol, double pBid, double pAsk, int currdt);

int symbolId;

char hosts[10240];

int SymbolToId(const string cSymbol){

      if (cSymbol == "EURUSD") return 1;

      if (cSymbol == "AUDUSD") return 2;

      if (cSymbol == "GBPUSD") return 3;

      if (cSymbol == "NZDUSD") return 4;

      if (cSymbol == "EURCHF") return 5;

      if (cSymbol == "USDCAD") return 6;

      if (cSymbol == "USDCHF") return 7;

      if (cSymbol == "EURCAD") return 8;

      if (cSymbol == "GBPAUD") return 9;

      if (cSymbol == "GBPCAD") return 10;

      if (cSymbol == "GBPCHF") return 11;

      if (cSymbol == "EURGBP") return 12;

      if (cSymbol == "GBPNZD") return 13;

      if (cSymbol == "NZDCAD") return 14;

}


int OnInit(){

   StringToCharArray("127.0.0.1", hosts);

   return(INIT_SUCCEEDED);

}

 

void start(){

}


void OnTick(){

 int res=savetick(hosts,SymbolToId(_Symbol),Bid,Ask,TimeCurrent());

}


Основная и единственная цель сохранять тики. Создаю советника. Открываю 14 подокон с графиками инструментов и на каждый ложу советника.

Смотрю тики сохраняются, похожие на правду.

Но часто как-будто значение цены одного инструмента попадает в другой.

На примере, eurusd ходит вокруг 1.2 ,а audusd вокруг 0.7

В данных для eurusd раз и встретится тик со значение близким к 0.7 ,а в audusd какое-нибудь близкое к 1.2

Что только не пробовал, уже грешу на драйвер дата стакса.

Что можете подсказать? Или такой подход сохранения тиков не праивльный в принципе и надо с одного экземпляра эксперта все тики ловить?

 
Ложи! 
 
Алексей Тарабанов:
Ложи! 

это слово не употребляется без предлога)

 
Taras Slobodyanik:

это слово не употребляется без предлога)

Так ведь есть предлог...

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Помогите отловить ошибку mt4+cpp(dll)cassandra driver+cassndra db

Aleksey Yakushev, 2018.08.27 22:13

#property version   "1.0"
#import "kernel32.dll"   
int GetModuleHandleA(string lpString);
int FreeLibrary(int hModule);  
int LoadLibraryA(string lpString);
#import "MATHLIBRARY.dll"  
int savetick(char&[],int pIdSymbol, double pBid, double pAsk, int currdt);
int symbolId;
char hosts[10240];

int SymbolToId(const string cSymbol){
      if (cSymbol == "EURUSD") return 1;
      if (cSymbol == "AUDUSD") return 2;
      if (cSymbol == "GBPUSD") return 3;
      if (cSymbol == "NZDUSD") return 4;
      if (cSymbol == "EURCHF") return 5;
      if (cSymbol == "USDCAD") return 6;
      if (cSymbol == "USDCHF") return 7;
      if (cSymbol == "EURCAD") return 8;
      if (cSymbol == "GBPAUD") return 9;
      if (cSymbol == "GBPCAD") return 10;
      if (cSymbol == "GBPCHF") return 11;
      if (cSymbol == "EURGBP") return 12;
      if (cSymbol == "GBPNZD") return 13;
      if (cSymbol == "NZDCAD") return 14;
}

int OnInit(){
   StringToCharArray("127.0.0.1", hosts);
   return(INIT_SUCCEEDED);
}

void start(){

}
void OnTick(){
 int res=savetick(hosts,SymbolToId(_Symbol),Bid,Ask,TimeCurrent());
}
... ложу советника.



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