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

 

İyi akşamlar. Lütfen bir danışmanla yardım edin, netlik için her şeyi şekilde tasvir etmeye çalıştım. Diyelim ki NEXT çubuğunun fiyatı "Dodge" un maksimum değerinden daha yüksek olduğunda bir '' Kaçınma '' oluşuyor - satın alıyorum, T/P, diyelim ki 15 puan aldım ve aynı çubuktaki fiyat geçerli yukarı ve T/P 15 puanlı sipariş (Buy_2) tekrar açılıyor, ancak Dodge'dan sonra 1. çubukta bu 2. açılışa (Buy_2) ihtiyacım yok . Bu yanlış anlaşılma nasıl giderilir???

 
iMAG :

Sevgili profesyoneller ve sadece bilgili!

Secdedeyim - BB göstergesi anlamadığım sinyaller veriyor ("Kırmızı-Yeşil-Kırmızı" değil!). Daha kesin olmak gerekirse, aşağıdaki çağrıyı yapıyorum:

bolup = iBands(Symbol(), 0, 24, 0, 2, 0, 1, 1);
kalın = iBands(Symbol(), 0, 24, 0, 2, 0, 2, 1);
bolmd = (bolup + kalın) / 2;
Print("Üst bantlar = ", bolup);
Print("Bantlar alt = ", kalın);
Print("Bant medyası = ", bolmd);

Sonuç olarak, 3 değişkenin tümü aynı değeri verir. >8-O

Bir çift euro, TF - H1. Herhangi bir fikir???

Şimdiden teşekkürler...

Sapmayı yine de negatif olarak ayarlar mısınız?
 
Fantar :

Netlik için, şekildeki her şeyi tasvir etmeye çalıştım.

Şimdi aynı şeyi sadece mq4'te çizmeye çalışın. Bir şey net değilse, burada sorular için bir konu. Ve sıfırdan danışmanlar oluşturmak için bir İş hizmeti var
 
iMAG :

Sevgili profesyoneller ve sadece bilgili!

Secdedeyim - BB göstergesi anlamadığım sinyaller veriyor ("Kırmızı-Yeşil-Kırmızı" değil!). Daha kesin olmak gerekirse, aşağıdaki çağrıyı yapıyorum:

bolup = iBands(Symbol(), 0, 24, 0 , 2, 0, 1, 1);
kalın = iBands(Symbol(), 0, 24, 0 , 2, 0, 2, 1);
bolmd = (bolup + kalın) / 2;
Print("Üst bantlar = ", bolup);
Print("Bantlar alt = ", kalın);
Print("Bant medyası = ", bolmd);

Sonuç olarak, 3 değişkenin tümü aynı değeri verir. >8-O

Bir çift euro, TF - H1. Herhangi bir fikir???

Şimdiden teşekkürler...

Ayarladığınız ana hattan sapma 0 (sıfır). Sıfırdan fazlasına ihtiyacımız var.
 

Stratejinin özü: Stokastik sinyalde (5,14,3) giriş, stokastikte de sadece farklı bir periyotla (5,3,3) çıkış. Öyleyse, ters sinyalde değil de stokastikte nasıl çıkış yapabileceğinizi anlamıyorum?
Bir sorunum var ve nasıl çözüleceğine dair hiçbir fikrim yok, açıklamaya çalışacağım.
Yani gönderdiğim kodda 2 fonksiyon var
 //+------------------------------------------------------------------+
//| подготовить массив тикетов для закрытия |
//+------------------------------------------------------------------+
void PrepareTicketsToClose( int signal, bool Revers, int & ticketsClose[][ 2 ], double & lots[], double arrayTickets[][ 9 ])
{
int size= ArrayRange (arrayTickets, 0 );
//----
if (size== 0 ) return ;

int i,type,ticket,closeSize;
for (i= 0 ;i<size;i++)
{
type=arrayTickets[i][ 1 ];
// если тип ордера не рыночный, то пропускаем
if (type>OP_SELL) continue ;

if (Revers) // перевернем тип рыночного ордера
{
if (type==OP_BUY) type=OP_SELL; else type=OP_BUY;
}

// тут решаем для каждого открытого ордера его судьбу
// оставить в рынке или добавить в массив на закрытие
if (type==OP_BUY)
{
//
// код разрешающий оставить покупку

// как пример
if (signal==OP_BUY) continue ;
}

if (type==OP_SELL)
{
//
// код разрешающий оставить продажу

// как пример
if (signal==OP_SELL) continue ;
}

closeSize= ArrayRange (ticketsClose, 0 );
ArrayResize (ticketsClose,closeSize+ 1 );
ArrayResize (lots,closeSize+ 1 );
ticketsClose[closeSize][ 0 ] = arrayTickets[i][ 0 ]; // # тикета
ticketsClose[closeSize][ 1 ] = arrayTickets[i][ 1 ]; // тип ордера

// здесь укажем сколько лотов нужно закрыть
lots[closeSize] = arrayTickets[i][ 2 ]; // закрываемый объем
// можно закрывать частично, тогда нужно переписать строку сверху
}
//----
return ;
}

//+------------------------------------------------------------------+
//| Закрывает ордера с указанными тикетами |
//+------------------------------------------------------------------+
void CloseMarketOrders( int ticketsArray[][ 2 ], double lotsArray[])
{
//----
int i,size= ArrayRange (ticketsArray, 0 );
if (size== 0 ) return ;

int ticket,type;
double lots;
bool res;

int total= OrdersTotal ();

for (i= 0 ;i<size;i++)
{
ticket = ticketsArray[i][ 0 ];
type = ticketsArray[i][ 1 ];
lots = lotsArray[i];
RefreshRates (); // на всякий случай обновим сведения о рыночном окружении

// блок закрытия покупок
if (type==OP_BUY)
{
res = OrderClose (ticket,lots,Bid,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в покупку #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

// блок закрытия продаж
if (type==OP_SELL)
{
res = OrderClose (ticket,lots,Ask,Slippage, Orange );
if (!res)
{
Print ( "Не удалось закрыть ордер в продажу #" ,ticket, "! Ошибка №" , GetLastError ());
// дальнейшая обработка ошибки, написать самостоятельно
}
}

}
//----
return ;
}
Void ReadTicketsToClose(int signal, bool Revers, int & TicketClose[][2], double & lot[],double arrayTickets[][9]) işlevinde, siparişten ayrılmaya karar vereceğiniz bir koşul ayarlamanız gerekir yada kapat...
Koşulları ayarlamayı denedim ama işe yaramıyor....
Belki birileri bakıp bu işlevlerde bir hata olup olmadığını gösterir ya da ben batırdım ....
Dosyalar:
 
Söyleyin bana, OrderSend komutuyla iki kez arka arkaya emir verirsem, aralarına IsTradeAllowed durum kontrol fonksiyonunu koymam gerekir mi?

yoksa gerekli değil mi ve EA, yalnızca sipariş başarıyla verildikten sonra ilk OrderSend çağrısından ikincisine geçecek mi?

IsTradeAllowed'ın hala ayarlanması gerekiyorsa, while döngüsünde hangi zaman gecikmesi ayarlanmalıdır?
 
Desead :
Söyleyin bana, OrderSend komutuyla iki kez arka arkaya emir verirsem, aralarına IsTradeAllowed durum kontrol fonksiyonunu koymam gerekir mi?

yoksa gerekli değil mi ve EA, yalnızca sipariş başarıyla verildikten sonra ilk OrderSend çağrısından ikincisine geçecek mi?

Test cihazında buna ihtiyacınız yok, ancak bir demoda veya gerçek bir demoda yoğun bir ticaret akışı hakkında bir mesaj alacaksınız.

Ölü :


IsTradeAllowed'ın hala ayarlanması gerekiyorsa, while döngüsünde hangi zaman gecikmesi ayarlanmalıdır?
Farklı sunucular için farklı olan yürütme hızına bağlıdır. Döngüye IsStopped () için de bir kontrol eklemeyi unutmayın, aksi takdirde şansınız kalmaz.
 
Merhaba! Lütfen bana ayrıntılı alıntıların arşivini nereden indirebileceğimi söyleyin (kene veya dakika)? MT 4'teki alıntıların Arşivinde bulunan veriler (kedi ağladı) 5 test için sadece günler.
 

Tünaydın. Sistemin AL ve SAT için üç giriş noktası vardır. Ancak bir sinyal geldiğinde, sinyal var olduğu sürece her tikte pozisyonlar açılır. Bir yerde bayraklarla ilgili bir hata var. Anlamaya yardım edin lütfen.

   static bool buy_h= true , buy_l= true , buy_50= true ,
               sell_h= true , sell_l= true , sell_50= true ;

 if (LSMA_Sig== 0 ) // up-trend
    {
       if (Stoch_Sig== 4 && buy_l== true )
       { 
         sl=Ask-Stop_Loss*Point;
         Ans=OrderSend(Symb,OP_BUY,Lots,Ask, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
         if (Ans== false )
           Alert( "Неудачная попытка открыть ордер BUY. Ошибка: " , GetLastError());
         if (Ans== true )
            buy_l= false ; // снимем флаг
       }
       //---
       if (Stoch_Sig== 0 && buy_50== true )
       {
         sl=Ask-Stop_Loss*Point;
         Ans=OrderSend(Symb,OP_BUY,Lots,Ask, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
         if (Ans== false )
           Alert( "Неудачная попытка открыть ордер BUY. Ошибка: " , GetLastError());
         if (Ans== true )
            buy_50= false ;        
       }
       //---
       if (Stoch_Sig== 2 && buy_h== true )
       {
         sl=Ask-Stop_Loss*Point;       
         Ans=OrderSend(Symb,OP_BUY,Lots,Ask, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
         if (Ans== false )
           Alert( "Неудачная попытка открыть ордер BUY. Ошибка: " , GetLastError());
         if (Ans== true )
            buy_h= false ;         
       }   
    }
   if (LSMA_Sig== 1 ) // dn-trend
    {
       if (Stoch_Sig== 3 && sell_h== true )
       {
         sl=Bid+Stop_Loss*Point;
         Ans=OrderSend(Symb,OP_SELL,Lots,Bid, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
         if (Ans== false )
            Alert( "Неудачная попытка открыть ордер SELL. Ошибка: " , GetLastError());
         if (Ans== true )
            sell_h= false ;
       }
     //---
     if (Stoch_Sig== 1 && sell_50== true )
      {
         sl=Bid+Stop_Loss*Point;      
         Ans=OrderSend(Symb,OP_SELL,Lots,Bid, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
         if (Ans== false )
            Alert( "Неудачная попытка открыть ордер SELL. Ошибка: " , GetLastError());
         if (Ans== true )
            sell_50= false ;         
      }
     //---
     if (Stoch_Sig== 5 && sell_l== true )
      {
         sl=Bid+Stop_Loss*Point;      
         Ans=OrderSend(Symb,OP_SELL,Lots,Bid, 40 ,sl, 0 , "LSMA+Stoch" ,Magic);
         if (Ans== false )
            Alert( "Неудачная попытка открыть ордер SELL. Ошибка: " , GetLastError());
         if (Ans== true )
            sell_l= false ;        
      }
    }
    
   if (Stoch_Sig!= 4 && buy_l== false ) // поднимем флаг
       buy_l= true ;
   if (Stoch_Sig!= 0 && buy_50== false )
       buy_50= true ;
   if (Stoch_Sig!= 2 && buy_h== false )
       buy_h= true ;
   if (Stoch_Sig!= 3 && sell_h== false )
       sell_h= true ;
   if (Stoch_Sig!= 1 && sell_50== false )
       sell_50= true ;
   if (Stoch_Sig!= 5 && sell_l== false )
       sell_l= true ;  
 
silhouette :

Tünaydın. Sistemin AL ve SAT için üç giriş noktası vardır. Ancak bir sinyal geldiğinde, sinyal var olduğu sürece her tikte pozisyonlar açılır. Bir yerde bayraklarla ilgili bir hata var. Anlamaya yardım edin lütfen.

OrdersTotal (), halihazırda açık olan pozisyonların sayısını döndürür, yani. Onun yardımıyla, halihazırda açık bir pozisyon olup olmadığını kontrol edebilirsiniz.