[Arşivle!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 2. - sayfa 441

 

Merhaba!

Yatırım raporunda, mevduatın yüklenmesini doğru bir şekilde görüntülemek için bir şeyler çalışmıyor. )) Bunu yapıyorum:

 #define RA 10000

if (Trade_Report == TRUE && !IsOptimization())
   {   int       pos;
       int       handle;
       int       Days;
       double    Swap_M;
       double    Profit_M;
       double    Swap_P;
       double    Profit_P;

       double    Source_LP[RA], LP_01[RA], LP_02[RA], LP_03[RA], LP_04[RA], LP_05[RA], LP_06[RA];
       double    Source_LP_02[RA], LP_01_02[RA], LP_02_02[RA], LP_03_02[RA], LP_04_02[RA], LP_05_02[RA], LP_06_02[RA];
       double    Source_SP[RA], SP_01[RA], SP_02[RA], SP_03[RA], SP_04[RA], SP_05[RA], SP_06[RA];
       double    Source_SP_02[RA], SP_01_02[RA], SP_02_02[RA], SP_03_02[RA], SP_04_02[RA], SP_05_02[RA], SP_06_02[RA];
       double    Load_Depo[RA]; 
   
      handle = FileOpen ( "OrdersReport.csv" , FILE_CSV | FILE_WRITE );
   
       if (handle > 0 )
                { //1
             FileWrite (handle, "Time Close" + "," + "Lots" + ","
                              + "Swap($)" + "," + "Profit($)" + "," + "Swap(p)" + "," + "Profit(p)" + "," + "Load Depo" + ","
                              + "SOURCE_LP" + "," + "LP#01" + "," + "LP#02" + "," + "LP#03" + "," + "LP#04" + "," + "LP#05" + "," + "LP#06" + ","
                              + "SOURCE_SP" + "," + "SP#01" + "," + "SP#02" + "," + "SP#03" + "," + "SP#04" + "," + "SP#05" + "," + "SP#06" );
             for (pos = 0 ; pos < OrdersHistoryTotal(); pos++)
               {   OrderSelect (pos,SELECT_BY_POS,MODE_HISTORY); //2
               
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_Source_LP && OrderCloseTime() == TimeCurrent ()) { Source_LP[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP01 && OrderCloseTime() == TimeCurrent ()) { LP_01[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP02 && OrderCloseTime() == TimeCurrent ()) { LP_02[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP03 && OrderCloseTime() == TimeCurrent ()) { LP_03[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP04 && OrderCloseTime() == TimeCurrent ()) { LP_04[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP05 && OrderCloseTime() == TimeCurrent ()) { LP_05[pos] = OrderProfit(); }
                   if (OrderType() == OP_BUY && OrderMagicNumber() == Magic_LP06 && OrderCloseTime() == TimeCurrent ()) { LP_06[pos] = OrderProfit(); }
                     
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_Source_SP && OrderCloseTime() == TimeCurrent ()) { Source_SP[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP01 && OrderCloseTime() == TimeCurrent ()) { SP_01[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP02 && OrderCloseTime() == TimeCurrent ()) { SP_02[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP03 && OrderCloseTime() == TimeCurrent ()) { SP_03[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP04 && OrderCloseTime() == TimeCurrent ()) { SP_04[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP05 && OrderCloseTime() == TimeCurrent ()) { SP_05[pos] = OrderProfit(); }
                   if (OrderType() == OP_SELL && OrderMagicNumber() == Magic_SP06 && OrderCloseTime() == TimeCurrent ()) { SP_06[pos] = OrderProfit(); }
                  
             //--- Вычисление загрузки депозита ---//
                   int               Amount_LD;
                   datetime          CurrentCloseTime = OrderCloseTime();
                   static datetime   CloseTime;                  
                  
                   if (CurrentCloseTime != CloseTime)
                     { Amount_LD = 1 ;
                       Load_Depo[pos] = (Amount_LD*(OrderLots()* 1000 )/AccountBalance())* 100 ;
                       CloseTime = OrderCloseTime(); }
                   else if (CurrentCloseTime == CloseTime)
                          { Amount_LD++;
                            Load_Depo[pos] = (Amount_LD*(OrderLots()* 1000 )/AccountBalance())* 100 ;
                            CloseTime = OrderCloseTime(); }
             //---------------------------------------------------------------------------------------------------------------------
                     
                  Swap_M     =  OrderSwap();
                  Profit_M   =  OrderProfit();
                  Swap_P     = (OrderSwap()/ 10 )/OrderLots();
                  Profit_P   = (OrderProfit()/ 10 )/OrderLots()+(OrderSwap()/ 10 )/OrderLots();
                     
                   if (OrderType() == OP_BUY || OrderType() == OP_SELL)
                     {   FileWrite (handle,TimeToStr(OrderCloseTime(),TIME_DATE|TIME_MINUTES)+ "," +DoubleToStr(OrderLots(), 2 )+ "," //3
                                          
                                          +DoubleToStr(OrderSwap(), 2 )+ "," +DoubleToStr(Profit_M+Swap_M, 2 )+ "," +DoubleToStr(Swap_P, 2 )+ ","
                                          +DoubleToStr(Profit_P, 2 )+ "," +DoubleToStr(Load_Depo[pos], 2 )+ ","
                                          
                                          +DoubleToStr(Source_LP[pos], 2 )+ "," +DoubleToStr(LP_01[pos], 2 )+ "," +DoubleToStr(LP_02[pos], 2 )+ ","
                                          +DoubleToStr(LP_03[pos], 2 )+ ","
                                          +DoubleToStr(LP_04[pos], 2 )+ "," +DoubleToStr(LP_05[pos], 2 )+ "," +DoubleToStr(LP_06[pos], 2 )+ ","
                                             
                                          +DoubleToStr(Source_SP[pos], 2 )+ "," +DoubleToStr(SP_01[pos], 2 )+ "," +DoubleToStr(SP_02[pos], 2 )+ ","
                                          +DoubleToStr(SP_03[pos], 2 )+ ","
                                          +DoubleToStr(SP_04[pos], 2 )+ "," +DoubleToStr(SP_05[pos], 2 )+ "," +DoubleToStr(SP_06[pos], 2 ));  } //3
               }   FileClose (handle); //2
         } //1

Sonuç olarak, başlangıçta yanlış hesaplanır. Load_Depo dizisindeki değerler sürekli değişmektedir ve açık pozisyonların da dikkate alınması gerekmektedir. Örnek olarak liderlik edin, eğer bir dakikanız varsa. ))

 
demlin :
Dürüst olmak gerekirse, hiçbir şey anlamadım, orada her şey çok karmaşık)))
Örnekler bile test komut dosyasından yardımcı olmuyor mu?
 
FreeSerfer :

Teşekkürler, anlam açık, programlama dilinin çok arkadaş canlısı olmaması üzücü.

Diyelimki:

Mavi renk - 0 numara - satın alma sinyali

Kırmızı renk - 1 numara - satış sinyali

ve başka bir soru, ok, üzerinde sabitleyebileceği ve sinyal verebileceği bir çubuk oluşumu sırasında yanıp sönebilir. Çıta oluştuğunda net bir sinyalden sonra işlemler açılmalıdır.

Bunu kodda uygulayabilen var mı?

Programlamayı mı öğreniyorsunuz yoksa sizin için yapacak birini mi arıyorsunuz?

Viktor, iCustom() işlevini kullanmanız gerektiğini size zaten açıkça belirtti. Meta düzenleyicinin yardımında bununla ilgili bilgi edinin. Orada her şey ayrıntılı. "Sıçramadan" kurtulmak için - iCustom()'da sıfırın değil, ilk çubuğun verilerini kullanın - zaten tamamen oluşturulmuştur.

En azından kendin bir şeyler yazmaya başladığın zaman, burada sana yardımcı olmaktan ve bir şey varsa düzeltmekten mutlu olacaklar ...

 
artmedia70 :

Programlamayı mı öğreniyorsunuz yoksa sizin için yapacak birini mi arıyorsunuz?

Viktor, iCustom() işlevini kullanmanız gerektiğini size zaten açıkça belirtti. Meta düzenleyicinin yardımında bununla ilgili bilgi edinin. Orada her şey ayrıntılı. "Sıçramadan" kurtulmak için - iCustom()'da sıfırın değil, ilk çubuğun verilerini kullanın - zaten tamamen oluşturulmuştur.

En azından kendin bir şeyler yazmaya başladığın zaman, burada sana yardımcı olmaktan ve bir şey varsa düzeltmekten mutlu olacaklar ...

Benim için zor olsa da kendim yazıyorum ve geriye kalan tek şey uzmanın hindiye bağlanması, Victor sayesinde yakında kendi başına çözülecek. Her durumda, cevap veren ve hareket edilecek yönü gösteren herkese teşekkürler.
 
peshihod :

Seçenekler sayısız olabilir. Basit olanları seçmek daha iyidir. Örneğin:


int Orderov;
int Tip;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int i,k;

Orderov=OrdersTotal();

for (i= 0 ;i<Orderov;i++)
{
OrderSelect(i,SELECT_BY_POS);

switch ( OrderType() )
{
case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;

case OP_BUYLIMIT:
//Задача для ордера типа OP_BUY
break ;

/// //------ и т.д.




}
}

return ( 0 );
}

Yardım....Soruyu cevaplayın.............

Bu kısım her tikte tetiklenir

case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;


Ve yalnızca her yeni açık siparişte bir kez çalışmalıdır.

Muhtemelen biletler, sihirler veya başka bir sipariş tanımlayıcı ile bir tür sayacı tutturmanız gerekiyor?

-------------------------------------------------- --------------------------------------

Orderov değişkenini yapmak gerekli mi?
Bunu yapabilmek mümkün mü?

for (i= 0 ;i<OrdersTotal();i++)

Komut dosyasının bir "k" değişkenine ihtiyacı var mı?

int i, k ;

 
Zhunko :
Örnekler bile test komut dosyasından yardımcı olmuyor mu?
Cevap için teşekkürler, sorunu farklı bir şekilde çözdüm, daha basit))
 
semiromid :

Bu kısım her tikte tetiklenir

case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;


Ve yalnızca her yeni açık siparişte bir kez çalışmalıdır.

Muhtemelen biletler, sihirler veya başka bir sipariş tanımlayıcı ile bir tür sayacı tutturmanız gerekiyor?

-------------------------------------------------- --------------------------------------

Orderov değişkenini yapmak gerekli mi?
Bunu yapabilmek mümkün mü?

for (i= 0 ;i<OrdersTotal();i++)

Komut dosyasının bir "k" değişkenine ihtiyacı var mı?

Her şeyi doğru anlamadım.

Tek kelime bilmeden Almanca şiir yazmaya çalışmak. Açıkça yazıyor muyum?

Yardımı okuyun, dilin tüm fonksiyonlarını ve özelliklerini öğrenin. Birkaç ay geçireceksin. Örneklere bir göz atın, MetaTrader4'ü kendiniz yüklediğinizde kullanılabilirler. O zaman sohbet edelim. Ne olduğunu anlayana kadar.

 
peshihod :

Her şeyi doğru anlamadım.

Tek kelime bilmeden Almanca şiir yazmaya çalışmak. Açıkça yazıyor muyum?

Yardımı okuyun, dilin tüm fonksiyonlarını ve özelliklerini öğrenin. Birkaç ay geçireceksin. Örneklere bir göz atın, MetaTrader4'ü kendiniz yüklediğinizde kullanılabilirler. O zaman sohbet edelim. Ne olduğunu anlayana kadar.


Programlamada yeniyim ve öğretmenim yok. Ve benim için önemli olan soruları cevaplamak senin için zorsa, bana hiçbir şey yazamazsın.

Ve senin için sana dönüyorum, aslında .....

 
semiromid :


Programlamada yeniyim ve öğretmenim yok. Ve benim için önemli olan soruları cevaplamak senin için zorsa, bana hiçbir şey yazamazsın.

Ve senin için sana dönüyorum, aslında .....


Affınıza sığınırım.

Kıyıda yüzmeyi öğrenemeyeceğinizi yazdım.

 
peshihod :


Affınıza sığınırım.

Kıyıda yüzmeyi öğrenemeyeceğinizi yazdım.


Bazen bir şeyi anlamak için soru sormak gerekir.

int Orderov;
int Tip;

//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
int i,k;

Orderov=OrdersTotal();

for (i= 0 ;i<Orderov;i++)
{
OrderSelect(i,SELECT_BY_POS);

switch ( OrderType() )
{
case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;

case OP_BUYLIMIT:
//Задача для ордера типа OP_BUY
break ;

/// //------ и т.д.




}
}

return ( 0 );
}

Yardım....Soruyu cevaplayın.............

Bu kısım her tikte tetiklenir

case OP_BUY:
//Задача для ордера типа OP_BUY
break ;

case OP_SELL:
//Задача для ордера типа OP_BUY
break ;


Ve yalnızca her yeni açık siparişte bir kez çalışmalıdır.

Muhtemelen biletler, sihirler veya başka bir sipariş tanımlayıcısı veya belki diziler ile bir tür sayacı tutturmanız gerekiyor? En azından bana bunun neyle bağlantılı olduğunu söyle.Bunu anlayana kadar devam edemeyeceğim.

-------------------------------------------------- --------------------------------------

Orderov değişkenini yapmak gerekli mi?
Bunu yapabilmek mümkün mü?

for (i= 0 ;i<OrdersTotal();i++)

Komut dosyasının bir "k" değişkenine ihtiyacı var mı?

int i, k ;

Neden: