Açık proje - kendin yap test cihazı optimize edici - sayfa 3

 
Burada kaynağı yayınladım - http://forexsystems.ru/phpBB/viewtopic.php?p=4379#4379
Silinmesi gereken yorumları görebilirsiniz.
TradeOrdersArray ve ClosedOrdersArray dizilerinin amacı burada açıklanmıştır. Biraz daha.
 
OrderSend ticaret fonksiyonunu yeniden tanımladı.
CorrectPrice() ve DrawArrowOnChart() işlevleri henüz tanımlanmadı.
Burada yayınlandı - http://forexsystems.ru/phpBB/viewtopic.php?p=4380#4380

Tüm değişkenleri init() bloğundan başlığa sürüklemek zorunda kaldım - aksi halde değişkenler görünmez. İlk hatam.
İkinci olarak, derleyici, işlevde varsayılan parametre değerini NULL olarak ayarlama girişiminde bulunur.
Üçüncü olarak, derleyici kodda tanımsız/tanımsız bir işlevle karşılaştığında yemin etmez (CorrectPrice() ve DrawArrowOnChart() ).
Belki de NULL ile tökezliyor ve daha fazla yemin etmiyor.
Fonksiyonun tanımını aptalca yaptım - sözlükten kopyaladım, bu yüzden geliştiriciler beni yanlış beyanla azarlarsa ....

  //+------------------------------------------------------------------+
//| Redefine OrderSend() function                       |
//+------------------------------------------------------------------+


int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit,
 string comment=[b]NULL[/b],int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;
      TradeOrdersArray[myOrdersTotal,3]=cmd;
      TradeOrdersArray[myOrdersTotal,4]=volume;
      TradeOrdersArray[myOrdersTotal,5]=price;
      TradeOrdersArray[myOrdersTotal,6]=slippage;
      TradeOrdersArray[myOrdersTotal,7]=stoploss;
      TradeOrdersArray[myOrdersTotal,8]=stoploss;
      TradeOrdersArray[myOrdersTotal,9]=comment;
      TradeOrdersArray[myOrdersTotal,10]=magic;
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }



Yarın OrderClose()'u yeniden tanımlamaya çalışacağım - orada test etme fikrini açıklamak daha kolay olacak.
PS İki kişi zaten indirdi - umut var

 
Silinmesi gereken yorumları görebilirsiniz

Rosh, bu foruma Rusça metin eklemeyi buldum (bunu kendim çözmek zorunda kaldım :)
Sadece editördeki kodu kopyaladığınızda, Rusça diline sahip olmalısınız, yani. Rusça nasıl yazılır? Ve foruma eklediğinizde de sırasıyla.
Ve tüm yorumlar kaydedilecek ;)
 
Renat, Slava
İşte boş ifade hakkında tartışmak için iyi bir örnek.
Örtülü tür dönüştürme, ";" den çok daha kötü ve daha tehlikelidir. parantezden sonra.
Bu durumda, açık bir hatamız var, ancak derleyici bir uyarı bile vermiyor.

Roş,
sayfa yine gitti.
 
Bir deneme daha:

int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, 
double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE)
  {
  if (CorrectPrice(symbol,cmd,price,myCurrentTime))
      {
      TradeOrdersArray[myOrdersTotal,0]= symbol;// записали иструмент
      TradeOrdersArray[myOrdersTotal,1]=pool_pos;// записали номер в списке терминала
      TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;// записали номер тикета у брокера
      TradeOrdersArray[myOrdersTotal,3]=cmd;// записали тип ордера
      TradeOrdersArray[myOrdersTotal,4]=volume;// записали размер ордера
      TradeOrdersArray[myOrdersTotal,5]=price;// записали цену открытия
      TradeOrdersArray[myOrdersTotal,6]=slippage;// записали проскальзывание в пунктах
      TradeOrdersArray[myOrdersTotal,7]=stoploss;// записали stoploss
      TradeOrdersArray[myOrdersTotal,8]=stoploss;// записали takeprofit
      TradeOrdersArray[myOrdersTotal,9]=comment;// записали комментарии
      TradeOrdersArray[myOrdersTotal,10]=magic;// записали MagicNumber
      TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;// записали дату выставления/открытия ордера
      DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color);
      myOrderTicket++;
      myOrdersTotal++;
      pool_pos++;
      return(myOrderTicket);
      }
      else return(-1);
  }
//+------------------------------------------------------------------+
 
Metinde ciddi bir hata var.
 
Teşekkürler Mak. Öz olmak ince zekanın ruhudur.
 
Roş,
Ben sadece Renat'ın bakıp hatayı kendisinin bulmasını istedim.
Ama görünüşe göre buraya bakmıyorlar ya da yazımı aptalca buluyorlar.
(ait. - "aptal sorulara cevap vermeyiz..") - :))

Bu, MQL sözdiziminin (ve/veya derleyicinin) eksiklikleri ile ilgilidir.
Derleyici, uyarmış olsa da, bu hataya hiçbir şekilde tepki vermeyecektir.
Ve bunu dilde yasaklardım (örtük tip dönüşümü).

özellikle.
TradeOrdersArray dizisi double türündedir.
Birkaç yerde ona dize değerleri atarsınız.
Örneğin:
TradeOrdersArray[myOrdersTotal,0]= symbol;


Derleyici tüm bunları yer ve test cihazı bile çalışır, ancak istediğiniz gibi olmaz.
Ve böyle bir hatayı aramak oldukça zordur, özellikle bir ay önce yapılmışsa,
ancak bugün programa birkaç satır eklediğimde ortaya çıktı.

(Plz., komut dosyasını düzeltin - sayfa ayrıldı, aksi takdirde izlemesi rahatsız edici.)

 
Ve daha sonra farklı türdeki verilerin saklanacağı bir diziyi nasıl tanımlayabilirim?
Bu reklam için burada
dize yorumu=NULL
derleyici şikayet eder.
Ama az önce sözlükten şablona göre kopyaladım.
 
Ve daha sonra farklı türdeki verilerin saklanacağı bir diziyi nasıl tanımlayabilirim?

olmadığından şüpheleniyorum.
Sadece 2 farklı dizide.