[UYARI, KONU KAPALI!] Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz hiçbir yerde. - sayfa 591

 
vik-777 :

Sorunu çözmeye yardımcı olun

Tüm kapalı pozisyonlar için bir seçim yapıyorum

for (int i=0; i<OrdersHistoryTotal(); i++)// Tüm terminal siparişleri için
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

sihirli sayıya göre filtreledikten sonra

if (OrderMagicNumber()==12)

filtre 3 konumu karşılıyor ve sadece son kapalı olana ihtiyacım var

Sadece sonuncuyu nasıl bırakacağımı anlayamıyorum?

teşekkürler

 //+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos( string sy= "0" , int tf= 0 , int op=- 1 , int mn=- 1 ) {
   datetime t;
   int       i, k=OrdersHistoryTotal();

   if (sy== "" || sy== "0" ) sy= Symbol ();
   for (i= 0 ; i<k; i++) {
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)) {
       if (OrderSymbol()==sy) {
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
           if (op< 0 || OrderType()==op) {
             if (mn< 0 || OrderMagicNumber()==mn) {
               if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
   return (iBarShift(sy, tf, t, True));
}
Sorunuzla alakalı olanın altını çizdim.
 

tekrar ediyorum çok gerekli

Sorunu çözmeye yardımcı olun

Tüm kapalı pozisyonlar için bir seçim yapıyorum

for (int i=0; i<OrdersHistoryTotal(); i++)// Tüm terminal siparişleri için
if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)==true)

sihirli sayıya göre filtreledikten sonra

if (OrderMagicNumber()==12)

filtre 3 konumu karşılıyor ve sadece son kapalı olana ihtiyacım var

Sadece sonuncuyu nasıl bırakacağımı anlayamıyorum?

teşekkürler

 
- aptal olmak iyidir! tumts-tumts (şarkıdan sözler)
 

Bana yardım et lütfen! Emrin eskisi kapandıktan hemen sonra Tp veya SL fiyatından açılması gerekmektedir.

#property telif hakkı "Telif hakkı © 2010, MetaQuotes Software Corp."
#özellik bağlantısı "http://www.metaquotes.net"
#özellik gösterisi_onayla
harici int MaxRisk=3;
extern bool Buy=false; // satın alma siparişi açmak için
extern bool Sat=true; // bir satış emri açmak için
harici int MagicNumber=7749;
harici int TP=210;
harici int SL=420;

{
çift nokta =MarketInfo(Symbol(),MODE_POINT);//Nokta sorgusu
çift Serbest=HesapFreeMargin();
double One_Lot =MarketInfo(Symbol(),MODE_MARGINREQUIRED);
çift Adım =MarketInfo(Symbol(),MODE_LOTSTEP);
double Lot =MathFloor(Serbest*MaxRisk/100/One_Lot/Adım)*Adım;
int konum,toplam=SiparişToplam();
//----

if(Buy==true && OrdersTotal()<=1)
{
OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Ask-SL*Point,Ask+TP*Point,"777"+ Symbol(), MagicNumber, 0, DarkGreen);

satın=yanlış;
}
if(Sat==true && OrdersTotal()<=1)
{
OrderSend(Symbol(),OP_SELL,Lot,Bid,3,Bid+SL*Point,Bid-TP*Point,"4949"+ Symbol(), MagicNumber, 0, DarkGreen);

satmak=yanlış;
}

için (konum=0; konum<toplam; konum++)
if(OrderSelect(kon,SELECT_BY_POS )==true)

if(OrdersTotal()==OP_BUY)
if(PRICE_CLOSE==OrderTakeProfit()) Buy=true;
if(PRICE_CLOSE==OrderStopLoss()) Sat=true;

}
}

if (OrderSelect(kon,SELECT_BY_POS )==true)
if (OrdersTotal()==OP_SEL)
{
if(PRICE_CLOSE==OrderStopLoss()) Buy=true;
if(PRICE_CLOSE==OrderTakeProfit()) Sat=true;

}
} }

//----
dönüş(0);
}
//+------------------------------------------- --------------------+




 

Beyler bir soru, işte bir alım sinyali, danışman emir açmaya çalışıyor ama fiyat değişiyor ve hata yanlış fiyattan çıkıyor, bunu nasıl aşabilirim, o satın alana kadar ne almaya çalışacak? ?

 void CLOSEORDER( string ord)
{
   for ( int i= 0 ; i< OrdersTotal (); i++)
   {                                               
       if ( OrderSelect (i,SELECT_BY_POS,MODE_TRADES)==true)
      {
         if (OrderSymbol()!= Symbol ()) continue ;
         if (OrderType()==OP_BUY && ord== "Buy" )
            OrderClose(OrderTicket(),OrderLots(),Bid, 30 , CLR_NONE ); // Закрываем Buy
         if (OrderType()==OP_SELL && ord== "Sell" )
            OrderClose(OrderTicket(),OrderLots(),Ask, 30 , CLR_NONE ); // Закрываем Sell
      }   
   }
}
//--------------------------------------------------------------------
void OPENORDER( string ord)
{
   int error;
   if (ord== "Buy" ) error= OrderSend ( Symbol (),OP_BUY, LOT,Ask, 20 ,SL,TP, "" , 1 , 3 );
   if (ord== "Sell" ) error= OrderSend ( Symbol (),OP_SELL,LOT,Bid, 20 ,SL,TP, "" ,- 1 , 3 );
   if (error==- 1 ) //неудачная покупка OK
   {  
      ShowERROR(error, 0 , 0 );
   }

ayakta durmak için kullanılır

Bid, 3 , CLR_NONE

5 işaretim olduğu için 30 ekledim ama faydası yok

 
vik-777 :

tekrar ediyorum çok gerekli

Sorunu çözmeye yardımcı olun

Tüm kapalı pozisyonlar için bir seçim yapıyorum



Sondan başlayın, sonra uygun olan ilkidir.

for (int i=OrdersHistoryTotal()-1;i>=0; i--)//
if( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY)==true)


 
Craft :

Bir sıkıntı daha kaldı, durdurma ve yeni pozisyon açma şartları eşit olmasına rağmen darbenin değil, sadece pozisyonun kapanmasının gerçekleştiği alanlar var.


bunun ayrıntılı olarak incelenmesi gerekir, bir EA'da alım satım açma koşullarının birbirini dışlamaması nedeniyle bu tür durumlar ortaya çıkabilir. Prensip gereği test cihazında gerekli değişkenlerin değerlerini takip etmeye çalışın.

if(Time[0]=='время_нужного_бара') //чтоб не засорять логи берем на конкретном баре - посмотрите на картинке, где именно ошибка
{
   Print("переменная=", значение);
}
 
Pyxlik2009 :

Beyler bir soru, işte bir alım sinyali, danışman emir açmaya çalışıyor ama fiyat değişiyor ve hata yanlış fiyattan çıkıyor, bunu nasıl aşabilirim, o satın alana kadar ne almaya çalışacak? ?

ayakta durmak için kullanılır

5 işaretim olduğu için 30 ekledim ama faydası yok

while(true) emrinin açılışını döngüye sokun, 135 hatasını kontrol edin, ardından RefreshRates(). Bak, terminal örneklerle betiklerle geliyor, her şey orada yazıyor.
 
alsu :

bunun ayrıntılı olarak incelenmesi gerekir, bir EA'da alım satım açma koşullarının birbirini dışlamaması nedeniyle bu tür durumlar ortaya çıkabilir. Prensip gereği test cihazında gerekli değişkenlerin değerlerini takip etmeye çalışın.

Tamam, bu kodun hangi bölümüne eklenmeli, pratik olarak nasıl uygulanır?
 
SergNF :

Sorunuzla alakalı olanın altını çizdim.
bu yüzden son kapalı sıra seçildi ve sonuncunun sihirle kapatılmasına ihtiyacım var, örneğin, bunlar 3,6 ve 9 satırlar, bu nedenle 3. satıra ihtiyacım var çünkü sihirle kapatılan sonuncusu