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

 

KAPALI pozisyonların kayıplarının toplam bakiyesinin SL ile hesaplanması ve AÇIK karlı işlemlerin toplam bakiyesinin hesaplanması işlevini biliyorsanız lütfen yazınız.

Kayıp bakiyesinin hesaplanması, mevduatın son maksimum değerinden başlamalıdır.

 

Güzel gün!!! Benim işlevim kırk lanetli kelimeyle yemin ediyor - görünüşe göre gerçekten bilmiyordum, ama onu nasıl oluşturacağımı da unuttum

 void   SELL { double Price1_SELL= (Bid-Dist* Point ) ; double TP1_SELL=Price1_SELL-TP* Point ; double SL1_SELL=Price1_SELL+SL* Point ;
   
   double   Price2_SELL= (Price1_SELL -Dist* Point ) ; double    TP2_SELL=Price2_SELL-TP* Point ; double    SL2_SELL=Price2_SELL+SL* Point ;
   
   double   Price3_SELL=(Price2_SELL -Dist* Point ) ; double   TP3_SELL=Price3_SELL-TP* Point ; double   SL3_SELL=Price3_SELL+SL* Point ;
   
   double   Price4_SELL= (Price3_SELL -Dist* Point ) ; double   TP4_SELL=Price4_SELL-TP* Point ; double   SL4_SELL=Price4_SELL+SL* Point ;
   
   double   Price5_SELL= (Price4_SELL -Dist* Point ) ; double    TP5_SELL=Price5_SELL-TP* Point ; double   SL5_SELL=Price5_SELL+SL* Point ;}
 
Dimka-novitsek :

Güzel gün!!! Benim işlevim kırk lanetli kelimeyle yemin ediyor - görünüşe göre gerçekten bilmiyordum ama onu nasıl oluşturacağımı da unuttum


Diman! İyi geceler! Dinlenmen gerek, çünkü bu bir fonksiyon değil, yazdığım bazı çöpler ...

 
O yüzden hatırlamıyorum diyorum. ona ekleyeceğim. Emirler. Derleyici neyi sevmiyor?
 
Dimka-novitsek :
O yüzden hatırlamıyorum diyorum. ona ekleyeceğim. Emirler. Derleyici neyi sevmiyor?

Yani f-ii yazılmaz. Ders kitabını okuyun.

 
Teşekkürler!! Okuyorum.
 
A. Yeterli parantez yoktu!
 

Merhaba! EA bekleyen duraklar yerleştirir. Test cihazını kontrol ederken, BUY_STOP yerine sadece SELL_STOP çalışıyor, Order Send error/ Buy order:130 açılırken hata oluştu.

 extern int TrailingStop= 30 ;
//-----------------------------------------------------------------------------------------------+
for (cnt= 0 ;cnt<total;cnt++)
     {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if (OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()== Symbol ())   // check for symbol
        {
         if (OrderType()==OP_BUY)   // long position is opened
           {
             // check for trailing stop
             if (TrailingStop> 0 )  
              {                 
               if (Bid-OrderOpenPrice()> Point *TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid- Point *TrailingStop,OrderTakeProfit(), 0 ,Green);
                     return ( 0 );
                    }
              }
           }
         else // go to short position
           {
             // check for trailing stop
             if (TrailingStop> 0 )  
              {                 
               if ((OrderOpenPrice()-Ask)>( Point *TrailingStop))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+ Point *TrailingStop,OrderTakeProfit(), 0 ,Red);
                     return ( 0 );
                    }
              }
           }
        }
     }

   
   return ( 0 );

Nedeni bulmaya yardım edin!

 

Nedeni mantıksızlık!

 for (cnt= 0 ;cnt<total;cnt++)
     {
       OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);
       if (OrderType()<=OP_SELLSTOP &&   // check for opened position 
         OrderSymbol()== Symbol ())   // check for symbol
        {
         if (OrderType()==OP_BUY)   // long position is opened
           {
Nasıl anlaşılır? SATIŞ DURDURSA, SATIN AL bununla ne ilgisi var?
 
Twilight :

Ve son 1-2-3 siparişlerinin kârsız olduğunu nereden biliyorsun?

Ve genel olarak, son siparişin ne olduğunu nasıl öğrenebilirim?


Geçenlerde, son kaybedilen sipariş durumunda bu siparişin türünü döndüren bir fonksiyon yazdım. Onlar. fHistory() == 0 ise, son kaybeden siparişimiz Buy, fHistory() == 1 ise, son kaybeden siparişimiz Sat oldu. Kârlı olanları izlemeniz gerekiyorsa, satırdaki işareti şu şekilde değiştirin: if (OrderProfit() > 0 ).

 //+----------------------------------------------------------------------------+
// Прибыльно или убыточно закрылся последний ордер, и возврат типа такого ордера
int fHistory(){
   for ( int i=OrdersHistoryTotal(); i >= 0 ; i--){               // Выборка в истории
     if ( OrderSelect (i,SELECT_BY_POS,MODE_HISTORY)== true ){   // Если есть следующий в истории
         if (OrderMagicNumber()!=magN) continue ;               // Ордера не нашего эксперта
         if (OrderProfit() < 0 ) return (OrderType());         // Если убыток по посл.ордеру вернем тип ордера
     }
  }
   return (- 1 );
}

Değişken magN - Küresel düzeyde ilan edilen sihirli siparişler.

Neden: