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

 
Vovo4ka :

Nedense kar alınır, olması gereken değil ..... lot kapandığında, karda 30 pp olması gerektiğinde alınır, tamamen farklı yazılır .... bir tür saçmalık


Ne saçmalık: "Aslında, bir siparişi açmak ve kapatmak arasındaki farkı hesaplayın) ve özetleyin ??????" ...

Ve hangi ciltlerde? bilmek gerekmez mi? Ürün fiyatı değişecektir...

Kâr, işlem yapılan pozisyon hacimlerine bağlı olarak puan olarak değil, para birimi cinsinden hesaplanır.

 
Vovo4ka :

Nedense kar alınır, olması gereken değil ..... lot kapandığında, karda 30 pp olması gerektiğinde alınır, tamamen farklı yazılır .... bir tür saçmalık


Siparişin karı puan değil, mevduat para birimi cinsindendir .

 

Doğru - burada toplam kayıp (kayıp), kayıpta bir SATIR'da kapatılan siparişlerin geçmişine göre hesaplanır.

Sizinki biraz farklı olacak ama prensip aynı.

 //---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0 ; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0 ;   // суммарный убыток по этим итерациям
   datetime 
  Time_at_History_Current = 0 ,
  Time_at_History_Previos = 0 ;      
   if ( OrdersHistoryTotal () != 0 )
   {
     for ( int counter = OrdersHistoryTotal ()- 1 ; counter >= 0 ; counter--)
      {
       OrderSelect (counter, SELECT_BY_POS, MODE_HISTORY);
       if ( OrderSymbol () == Symbol () && OrderMagicNumber () == MagicNumber)
         {
           if ( OrderType () == OP_BUY || OrderType () == OP_SELL)
            {
             if ( OrderProfit () < 0 ) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit ();
                 Sum_Loss=Sum_Loss+lastLoss;   // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime ();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if (Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;              
                 //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                 if ( OrderProfit () >= 0 ) 
                   break ;
               }
            }
         }
      }
   }
 
PapaYozh :


Siparişin karı puan olarak değil, mevduat para birimindedir.


bu yüzden buna puan olarak ihtiyacım var, lot sabit 1 .... ama nedense kar veya zarar gerçek olana karşılık gelmiyor ..... bu yüzden kar puanlarının sayısını ve geri çekilmeyi hesaplamak istiyorum. kolayca ve özetleyin ve sonucu alın =)
 
Roman. :

Doğru - burada toplam kayıp (kayıp), kayıpta bir SATIR'da kapatılan siparişlerin geçmişine göre hesaplanır.

Sizinki biraz farklı olacak ama prensip aynı.


Teşekkürler hemen hallediyorum =)
 
Vovo4ka :

bu yüzden buna puan olarak ihtiyacım var, lot sabit 1 .... ama nedense kar veya zarar gerçek olana karşılık gelmiyor ..... bu yüzden kar puanlarının sayısını ve geri çekilmeyi hesaplamak istiyorum. kolayca ve özetleyin ve sonucu alın =)


Tekrar:

Siparişin karı puan değil , mevduat para birimindedir .

 
Vovo4ka :

bu yüzden buna puan olarak ihtiyacım var, lot sabit 1 .... ama nedense kar veya zarar gerçek olana karşılık gelmiyor ..... bu yüzden kar puanlarının sayısını ve geri çekilmeyi hesaplamak istiyorum. kolayca ve özetleyin ve sonucu alın =)

Pekala, parti sabitse, testçinin karını Point'e bölün. Puan olarak kazanç olacaktır.
 

En son yayınlanan Kim işlevi GetPotentialLossInCurrency (https://forum.mql4.com/en/11287/page107) yalnızca açık siparişleri dikkate alır:

 if ( OrderType ()==OP_BUY) {
                pl+=( OrderOpenPrice ()- OrderStopLoss ())/po* OrderLots ()*tv;
              }
if ( OrderType ()==OP_SELL) {
                pl+=( OrderStopLoss ()- OrderOpenPrice ())/po* OrderLots ()*tv;
              }
Bekleyen siparişlerin muhasebesini dahil ederek biraz genişletmeye çalıştım (sadece başka türler ekleyerek):
 if ( OrderType ()==OP_BUY || OrderType ()==OP_BUYLIMIT || OrderType ()==OP_BUYSTOP) {
                     pl+=( OrderOpenPrice ()- OrderStopLoss ())/po* OrderLots ()*tv;
                     }
if ( OrderType ()==OP_SELL || OrderType ()==OP_SELLLIMIT || OrderType ()==OP_SELLSTOP) {
                     pl+=( OrderStopLoss ()- OrderOpenPrice ())/po* OrderLots ()*tv;
                  }
ancak bekleyen siparişler dikkate alınmaz. Farklı mı sayılıyorlar? Belgeler bu konuda hiçbir şey söylemiyor ....
 
artmedia70 :
Grafikteki tüm bayrakları Yorumlar ile görüntüleyin ve anlaşmanın neden açıldığı anlaşılacaktır.

araya girdi, şimdi hiç taahhüt etmiyor.
Dosyalar:
1_1.mq4  21 kb
 
Ivn :

araya girdi, şimdi hiç taahhüt etmiyor.

Neden öyle? Tüm bayrakları tek seferde tek Yorum`da görüntüleyin.

Tam burada:

 int start()
  {
//----


 RefreshRates ();                         // Обновление данных
 Symb= Symbol ();
 int cnt, ticket, total;
 int ABuy= 0 ;                               // флаг на покупку /продажу   
 int ASell= 0 ;   
 
   Comment ( ".....Вот сюда и пишите вывод всех флагов......" );

 if (NewBar() == true)
{        
     x=x0; //передаем данные 
    x1=x01;
    x2=x02;