[ARŞİV!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde - 4. - sayfa 630

 
hoz :


Şu anda aşağıdaki ticaret işlevine sahibim:

Herhangi bir değişiklik yapılmaz.


Trade() fonksiyonunda bir emir seçmediniz.
 
rigonich :

Senaryodan ne istediğini anlamadım.


Başlatıldığında arşiv çizelgelerinde yer alan bir programa ihtiyacımız var.

hareketin gücü ve bu hareketin zamanı için belirtilen parametrelerle fiyat hareketinin bölümleri görsel olarak belirtilecektir.

Örneğin - 30 dakikada tamamlanan 400 puanlık bir düzeltme. Ve böylece geçen yıl boyunca, bu aralıktaki tüm düzeltmeler.

Görsel olarak onlara bakmak, manuel olarak - bu imkansız. Çarpıtma. Bir renk ataması ile arzu edilir, böylece hemen - gözlerde.

___

Baktım, farklı programlar "Histoty" var. Ancak yalnızca hesap geçmişini oluştururlar.

Ancak verilen filtreler için fiyat segmentini bulamadım.

 
rigonich :

Trade() fonksiyonunda bir emir seçmediniz.


Böyle var. İşte düzeltildi.

 bool Trade ( int signal)
{
   int total = OrdersTotal () - 1 ;
  
  FindOrders();

   if (signal == SIGNAL_BUY)                                                           // Если сигнал на покупку и открытых ордеров нет..
     if (!OpenBuy())                                                                   // открываем лимитный ордер на покупку
       return ( false );                                                                
      
   if (signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if (!OpenSell())
       return ( false );                                                               // открываем лимитный ордер на продажу
       
   for ( int i=total; i>= 0 ; i--)
  {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES))
    {
       if (OrderStopLoss() == 0 || OrderTakeProfit() == 0 )
        OrdersModifying();                                                             // Модифицируем ордер, добавим SL и TP
    }
  }    
 // if(UseBU == true)
   //  MovingStopLossToBU();                                                         // Перевод в б.у. по достижению некоторого значения TP

   return ( true );
}

İşte değiştirme işlevi:

 void OrdersModifying()
{
   int total = OrdersTotal () - 1 ;
   double sl = 0 , tp = 0 ;
  
   for ( int i=total; i>= 0 ; i--)
  {
     if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES) == true )                             // Если ордер есть и он выбран..
    {
       if (g_type == OP_BUY)
      {
         if (i_sl != 0 )                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble (OrderOpenPrice() - i_sl*pt, Digits );                     // Получаем значение стоп-лосса для выбранного ордера
         if (i_tp != 0 )                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble (OrderOpenPrice() + i_tp*pt, Digits );                     // Получаем значение тейкпрофита для выбранного ордера
      }
       if (g_type == OP_SELL)
      {
         if (i_sl != 0 )                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble (OrderOpenPrice() + i_sl*pt, Digits );                 // Получаем значение стоп-лосса для выбранного ордера
         if (i_tp != 0 )                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble (OrderOpenPrice() - i_tp*pt, Digits );                 // Получаем значение тейкпрофита для выбранного ордера
      }
       if (sl != 0 || tp != 0 )                                                             // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400 ,Lime);       // Модифицируем ордер
      }
    }
  }
}

Garip Ama yine çıkışta duraklama yok.

 
TUNGUS :


Başlatıldığında arşiv çizelgelerinde yer alan bir programa ihtiyacımız var.

hareketin gücü ve bu hareketin zamanı için belirtilen parametrelerle fiyat hareketinin bölümleri görsel olarak belirtilecektir.

Örneğin - 30 dakikada tamamlanan 400 puanlık bir düzeltme. Ve böylece geçen yıl boyunca, bu aralıktaki tüm düzeltmeler.

Görsel olarak onlara bakmak, manuel olarak - bu imkansız. Çarpıtma. Bir renk ataması ile arzu edilir, böylece hemen - gözlerde.

___

Baktım, farklı programlar "Histoty" var. Ancak yalnızca hesap geçmişini oluştururlar.

Ancak verilen filtreler için fiyat segmentini bulamadım.


History, History_Draw - test ederken Uzman Danışmanlar gibi çalışırlar.

Burada, verilen parametrelere göre geçmişteki düzeltmeleri izlemek için böyle bir şeye ihtiyacınız var.

 

Symbol() MT4 ile ilgili sorun:

Gösterilecek 2 fonksiyon:

 string    SymbolOK()
{

   string    value ;
   string    argument = "ANYTHING" ;

   if ( false )
   {
       value = argument;
   }

   return ( value );

}

string    SymbolPROBLEM()
{

   string    value ;
   string    argument = Symbol();

   if ( false )
   {
       value = argument;
   }

   return ( value );

}

İlkini yürütmek boş bir dize verir:

 int start()
{
   Comment (SymbolOK());
   return ( 0 );
}

Ve işte ikinci işlev dizisi tanımlayıcısı "EURUSD" (peki, grafiğe bağlıdır, ancak çıktı, işlevin mantığına göre boş bir dize olması gerekse de):

 int start()
{
   Comment (SymbolPROBLEM());
   return ( 0 );
}

Neyin yanlış olduğunu anlamama yardım et? teşekkürler

 
rigonich :

Trade() fonksiyonunda bir emir seçmediniz.

Bu arada. Ve Trade() işlevinde bir sipariş seçmenin amacı nedir? Orada siparişlerin seçildiği ve değiştirildiği OrdersModifying() işlevini çağırıyorum. Onlar. orijinal versiyon doğruydu!
 
hoz :


Böyle var. İşte düzeltildi.

İşte değiştirme işlevi:

Garip Ama yine çıkışta duraklama yok.



OrderSelect (g_ticket,SELECT_BY_TICKET) satırından önce if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
 
TUNGUS :


History, History_Draw - test ederken Uzman Danışmanlar gibi çalışırlar.

Burada, verilen parametrelere göre geçmişteki düzeltmeleri izlemek için böyle bir şeye ihtiyacınız var.


Tarihte mi yoksa haritada mı? Sonucu hangi formda görmek istiyorsunuz? çizelge penceresinde ayrı bir pencerede tablo şeklinde basılmış ise hangi verilerle farklı renkte mum şeklinde hareketin başlangıcını ve sonunu birbirine bağlayan çizgiler şeklinde yazınız? daha spesifik olarak, ve zaman olduğunda, sizin için yapacağım.
 
rigonich :

OrderSelect(g_ticket,SELECT_BY_TICKET) satırından önce if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)


İşte yaptığım şey:

 bool Trade ( int signal)
{
   int total = OrdersTotal () - 1 ;
  
  FindOrders();

   if (signal == SIGNAL_BUY)                                                           // Если сигнал на покупку и открытых ордеров нет..
     if (!OpenBuy())                                                                   // открываем лимитный ордер на покупку
       return ( false );                                                                
      
   if (signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if (!OpenSell())
       return ( false );                                                               // открываем лимитный ордер на продажу

     if ( OrderSelect (g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true )
    {
       if (OrderStopLoss() == 0 || OrderTakeProfit() == 0 )
        OrdersModifying();                                                             // Модифицируем ордер, добавим SL и TP
    }    
 // if(UseBU == true)
   //  MovingStopLossToBU();                                                         // Перевод в б.у. по достижению некоторого значения TP

   return ( true );
}

Durma ve alma yoktur. Logda 130 hatası yazıyor doğru ayak değil diyorlar. Nedenini göremiyorum.

 
hoz :


İşte yaptığım şey:

Durma ve alma yoktur. Hata 130, ayakların doğru olmadığını söyleyerek günlükte yazılır. Nedenini göremiyorum.


Hayır, sadece OrderSelect (g_ticket,SELECT_BY_TICKET,MODE_TRADES); ve bunu OrdersModifying() içinde bırakabilirsiniz.

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

geçersiz SiparişlerDeğiştirme()

{

OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES);

if(g_type == OP_BUY)

{

if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits); // Kaybı durdur giriş parametresi 0'a eşit değilse, o zaman..

// Seçilen sipariş için stop loss değerini alın

if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Rakamlar); // Takeprofit giriş parametresi 0'a eşit değilse, o zaman..

// Seçilen sipariş için kar al değerini al

}

if(g_type == OP_SEL)

{

if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits); // Kaybı durdur giriş parametresi 0'a eşit değilse, o zaman..

// Seçilen sipariş için stop loss değerini alın

if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Rakamlar); // Takeprofit giriş parametresi 0'a eşit değilse, o zaman..

// Seçilen sipariş için kar al değerini al

}

if(sl != 0 || tp != 0) // sl ve tp'nin alınan değerleri 0'a eşit değilse, o zaman..

{

OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime); // Sıralamayı değiştir

}

}


Neden: