Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 415

 
Link_x :
Merhaba!
"Kim" fonksiyonlarında son açık emirden elde edilen kar miktarını hesaplayan böyle bir fonksiyon var mı?

Bulamadım ve şimdi son açık siparişin kâr miktarını hesaplamak için kendi kendime yaptığım bir işlev üzerinde "kafamı kırıyorum".


SiparişKar()

Tam olarak son açık olana ihtiyacınız varsa, tüm siparişleri yineleyin ve açılış zamanı en geç olanı seçin, ardından yukarıdaki işlevi kullanın, bu size bu siparişin net kârını geri getirecektir.

 
Ekburg :


SiparişKar()

Tam olarak son açık olana ihtiyacınız varsa, tüm siparişleri yineleyin ve açılış zamanı en geç olanı seçin, ardından yukarıdaki işlevi kullanın, bu size bu siparişin net kârını geri getirecektir.


Bana zamanında cevap verdikleri gibi, tam bir çözüm bulduğum anda. :)
Pips_Proffit_Last_Pos = p - PriceOpenLastPos;
Yinede teşekkürler!
 

Ekburg К сожалению времени и возможности написать Вам готовый код нет, так как я на работе нахожусь))

Tarihe göre değil, mevcut pozisyonlara göre bakıyorsunuz, işte kod yazmaya çalışabileceğiniz mantıklı bir zincir:

[hareketlerle çalışma ve sipariş verme bloğu]

1 verilen siparişin biletini ve sihirli numarasını hatırlayın

2 emirlerin sayısını izleyin, eğer piyasada emir yoksa (bu, emrimizin kapatıldığı anlamına gelir) o zaman 3. maddeye gidin veya kapanış zamanı sıfırdan büyük olana kadar bu özel emri takip edin, bu durumda madde 3'ü hariç tutarız. ve 4

3 siparişimizi bulun

4 kapalı olduğundan emin olun

5 nasıl kapatıldığını öğrenin

6 Durakla kapatılmışsa, ondan farklı olarak başka bir sipariş veririz.


 //+------------------------------------------------------------------+
//|                                                          123.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link        "http://www.metaquotes.net"


extern double Lots = 0.1 ;
extern double TakeProfit = 100 ;
extern double StopLoss = 100 ;       
extern double TrailingStop = 50 ;
extern double Margincutoff = 100 ;   
extern double MagicNumber = 12345 ;
extern double TradeSizePercent = 5 ;
extern int Slippage = 10 ;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
  
   int Crossed ( double line1, double line2)
  {
   static int last_direction= 0 ;
   static int current_direction= 0 ;
  
   if (line1>line2)current_direction= 1 ; // пересечение вверх
   if (line1<line2)current_direction= 2 ; // пересечение вниз
  
   if (current_direction!=last_direction) //изменения произошли
  {
  last_direction=current_direction;
   return (last_direction);
  }
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
     int cnt, ticket, total, totalhistory, memoryticket;
     double shortEMA, longEMA;
    
     if ( Bars < 100 ) 
     {
     Print ( "Bars less than 100" );
     return ( 0 );
     }
     shortEMA= iMA ( NULL , 0 , 8 , 0 , MODE_EMA , PRICE_CLOSE , 0 );
     longEMA= iMA ( NULL , 0 , 13 , 0 , MODE_EMA , PRICE_CLOSE , 0 );
     int isCrossed=Crossed(shortEMA, longEMA);
//----
   total= OrdersTotal ();
   if (total< 1 ) 
     {
       // нет открытых ордеров
       if ( AccountFreeMargin ()<( 1000 *Lots))
        {
         Print ( "We have no money. Free Margin = " , AccountFreeMargin ());
         return ( 0 );  
        }
       // проверяем пересечение МА для открытия позиции на покупку
       if (isCrossed== 1 )
        {
         ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask ,Slippage, Ask -StopLoss* Point , Ask +TakeProfit* Point , "МА" , 12345 , 0 ,Green);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "BUY order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening BUY order : " ,GetLastError()); 
         return ( 0 ); 
        }
         //проверяем пересечение МА для открытия позиции на продажу
         if (isCrossed== 2 )
        {
         ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid ,Slippage, Bid +StopLoss* Point , Bid -TakeProfit* Point , "MA" , 12345 , 0 ,Red);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "SELL order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening SELL order : " ,GetLastError()); 
         return ( 0 ); 
        }
         return ( 0 ); 
        }  
//----начинаем искать закрытые ордера

         //инициализация параметров
  
   int old_order_type;
 
   
   RefreshRates ();
  
   //нет открытых ордеров - ищем в истории закрытых ордеров последний закрытый именно этим советником ордер 
   for ( totalhistory = OrdersHistoryTotal () - 1 ; totalhistory >= 0 ; totalhistory-- ) 
  {
     if ( OrderSelect (totalhistory, SELECT_BY_TICKET , MODE_HISTORY ) && OrderTicket () == memoryticket && OrderMagicNumber () == MagicNumber && OrderSymbol () == Symbol () )
     {
         old_order_type = OrderType ();
         if ( OrderProfit ()< 0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         {
                 break ; //прекращаем поиск
         }
     }
  }
   //если раньше покупали, то теперь продаем
   if ( old_order_type == OP_BUY )
  {
  ticket= OrderSend ( Symbol (), OP_SELL ,Lots, Bid ,Slippage, Bid +StopLoss* Point , Bid -TakeProfit* Point , "MA" , 12345 , 0 ,Red);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "SELL order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening SELL order : " ,GetLastError()); 
         return ( 0 ); 
        }
 //если раньше продавали, то теперь покупаем
   if ( old_order_type == OP_SELL )
  {
         ticket= OrderSend ( Symbol (), OP_BUY ,Lots, Ask ,Slippage, Ask -StopLoss* Point , Ask +TakeProfit* Point , "МА" , 12345 , 0 ,Green);
         if (ticket> 0 )
           {
             if ( OrderSelect (ticket, SELECT_BY_TICKET , MODE_TRADES )) 
            memoryticket= OrderTicket (); // запомнили тикет
             Print ( "BUY order opened : " , OrderOpenPrice ());
           }
         else Print ( "Error opening BUY order : " ,GetLastError()); 
         return ( 0 ); 
        }
   return ( 0 );
  }
//+------------------------------------------------------------------+
İşte aldığım şey. Gerçeği 3 lot açar. Genel olarak berbattı. Kodu düzeltebilir misin? Sorun nedir?
 
Bu tür sorular sormaktan zaten bıktım (sinir sistemini inanılmaz derecede rahatsız ediyor, pi ****, üzgünüm (bulamadığım sikik değişkenler (çoğunlukla kendimi bulamadığım sinir bozucu))).

Mevcut fiyat değerinden hangi değişken sorumludur?
Bid, Ask, POINT_HIGH , POINT_LOW dışında belgeleri teslim ettim, hiçbir şey yok.
Böyle bir değişken gerçekten var mı?
 
Link_x :
Bu tür sorular sormaktan zaten bıktım (sinir sistemini inanılmaz derecede rahatsız ediyor, pi ****, üzgünüm (bulamadığım sikik değişkenler (çoğunlukla kendimi bulamadığım sinir bozucu))).

Mevcut fiyat değerinden hangi değişken sorumludur?
Bid, Ask, POINT_HIGH, POINT_LOW dışında belgeleri teslim ettim, hiçbir şey yok.
Böyle bir değişken gerçekten var mı?
"Piyasa İzleme" penceresinde fiyatın nasıl değiştiğini fark ettiniz mi? Orada Teklif ve Talep'i gözlemleyebilirsiniz - bunlar güncel fiyatlardır . İlki satılık, ikincisi ise satın almak içindir.
 
Link_x :

Bana zamanında cevap verdikleri gibi, tam bir çözüm bulduğum anda. :)
Çözüm kendini gösteriyor: "Soru sormak için acele etmeyin." Ve her zaman yetkin cevaplar almadığınızı düşünüyorsanız ... :)))
 
khorosh :
"Piyasa İzleme" penceresinde fiyatın nasıl değiştiğini fark ettiniz mi? Orada Teklif ve Talep'i gözlemleyebilirsiniz - bunlar güncel fiyatlardır. İlki satılık, ikincisi ise satın almak içindir.

Tochnyak!!!
Bu küçük şeyi unutmuşum!!!
 
TarasBY :
Çözüm kendini gösteriyor: "Soru sormak için acele etmeyin." Ve her zaman yetkin cevaplar almadığınızı düşünüyorsanız ... :)))
Evet evet. :)
 
Link_x :
Tochnyak!!!
Bu küçük şeyi unutmuşum!!!

Bir sınavdaki gerçek bir öğrenci gibi doğru cevap verirsin: - bilmiyorum diyemezsin, - unuttum demen gerekir))).
 
Link_x :
Evet evet. :)

Belki de kendi sorularını sormak yerine başkalarının sorularını yanıtlamayı denemelisin. Faydaları çok daha fazla (Belirli bir noktaya kadar), elbette kendinize olan faydaları