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

 
mamba5 :

danışmanın testi sırasında bir hata 130 oluşturulur - yanlış durur. TakeProfit ve StopLoss harici değişkenleri NewOrder işlevine geçirilmelidir ve bana öyle geliyor ki bunun için her şeyi yaptım, ancak print-show'larda olduğu gibi sıfırlar geçiliyor. Anladığım kadarıyla, hatanın nedeni burada yatıyor, ancak bunu nasıl düzelteceğimi henüz çözemedim. yardımınızı rica ediyorum.

harici int TakeProfit=100;
harici int StopLoss=100;

................................................

NewOrder(OP_BUYSTOP, Parti, TakeProfit, StopLoss);
NewOrder(OP_SELLSTOP, Lot, TakeProfit, StopLoss);

int NewOrder(int Cmd,çift Lot,int TakeProfit,int StopLoss)

Burada sorun, StopLoss global değişkenlerinin olması ve yığına hala parametre olarak prosedüre iletilmeleridir. Bunları prosedürde yeniden adlandırmak daha iyidir.

 
fore-x:

Как в mql4 из одного индикатора управлять более чем 8 буферами обмена, существует ли способ обхода данного ограничения?

Ну, как пример, мне нужно построить более 8 индикаторных линий, но из одной программы.

Zhunko :

eğilim çizgileri.

Ve daha ayrıntılı olarak? Bana bir link verebilir misin, nereden okuyabilirim?
 
splxgf :

Burada sorun, StopLoss global değişkenlerinin olması ve yığına hala parametre olarak prosedüre iletilmeleridir. Bunları prosedürde yeniden adlandırmak daha iyidir.


Haklısın. Bu şekilde gerçekten daha mantıklı. Sabit:

 //+----------Функция открытия ордера-----------------------------------+
int NewOrder( int Cmd, double Lot, int TaPr, int StLo)
{
 double TP= 0 ; // тейкпрофит
 double SL= 0 ; // стоплос
 double PR= 0 ; // цена
 while (! IsTradeAllowed ()) Sleep ( 100 );
 if (TaPr< MarketInfo ( Symbol (),MODE_STOPLEVEL))  
    TaPr= MarketInfo ( Symbol (),MODE_STOPLEVEL);
 if (StLo< MarketInfo ( Symbol (),MODE_STOPLEVEL))  
    StLo= MarketInfo ( Symbol (),MODE_STOPLEVEL);
 if (Cmd==OP_BUY)
   {
    PR= NormalizeDouble (Ask, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Ask, Digits )+ NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )SL= NormalizeDouble (Bid, Digits )- NormalizeDouble (StLo* Point , Digits );
   }
 if (Cmd==OP_SELL)
   {
    PR= NormalizeDouble (Bid, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Bid, Digits )- NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )  SL= NormalizeDouble (Ask, Digits )+ NormalizeDouble (StLo* Point , Digits );
   }
 Print ( "TaPr=" ,TaPr, " StLo=" ,StLo, " StopLevel=" , MarketInfo ( Symbol (),MODE_STOPLEVEL));
 tic= OrderSend ( Symbol (),Cmd,Lot,PR, 3 ,SL,TP, "" , 0 , 0 , CLR_NONE );
 if (tic< 0 ) Print ( "ошибка открытия ордера:" , GetLastError ()); Print ( "Cmd-" ,Cmd, " Lot=" ,Lot, " PR=" ,PR, " SL=" ,SL, " TP=" ,TP);
return (tic);
}
Ama bu pek yardımcı olmadı. TaPr ve StLo= 100 iken PR, SL ve TP nedense sıfırdır.....
Dosyalar:
 

Merhaba, siparişin sadece 1 kez açılması için bir koşul yazmama yardım edin, bu aşamada her tikte açılıyor

   topOrder= OrderSend ( Symbol (),OP_BUYSTOP, 1 ,Hinput, 3 ,Price_high-(height_box/ 100 *sl),Price_high+(height_box/ 100 *tp), "my order #" , 16384 , 0 , Green );
                     if (topOrder< 0 )
                        {
                           Print ( "Верхний ордер ошибка #" , GetLastError ());
                           return ( 0 );
                        }

En üstte, ondan önce , SL ve TP'nin açılış fiyatı hesaplanır, ardından emir açılır, sadece emir verilmiş olup olmadığına bakmak için bir şeyler yapmak gerekir, ikincisi aynıdır, böylece OrderComment açılır yerleştirilmemiş, belki bir şekilde nasıl yapacağımı çözemiyorum

Şimdiden teşekkürler

 
fore-x :
Ve daha ayrıntılı olarak? Bana bir link verebilir misin, nereden okuyabilirim?
Hangi bağlantı? Çubukları trend çizgileriyle birleştirin . Böylece onların aksaklıkları ile tamponlardan bağımsız olacaksınız.
 
artmedia70 :
Siz kendiniz çizelgeye koyana kadar Expert Advisor'ın çalışması sırasında yansımayacaktır. Bunu nasıl yaptın?
Test cihazında bir EA çalıştırıyorum. ve test cihazının tamamlanmasından sonra gösterge çizgilerinin bilgileri görünür.
 
mamba5 :


Haklısın. Bu şekilde gerçekten daha mantıklı. Sabit:

Ama bu pek yardımcı olmadı. TaPr ve StLo= 100 iken PR, SL ve TP nedense sıfırdır.....


  NewOrder(OP_BUYSTOP, Lot, TakeProfit, StopLoss);
  NewOrder(OP_SELLSTOP, Lot, TakeProfit, StopLoss);
 if (Cmd==OP_BUY)
   {
    PR= NormalizeDouble (Ask, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Ask, Digits )+ NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )SL= NormalizeDouble (Bid, Digits )- NormalizeDouble (StLo* Point , Digits );
   }
 if (Cmd==OP_SELL)
   {
    PR= NormalizeDouble (Bid, Digits );
     if (TaPr> 0 )TP= NormalizeDouble (Bid, Digits )- NormalizeDouble (TaPr* Point , Digits );
     if (StLo> 0 )  SL= NormalizeDouble (Ask, Digits )+ NormalizeDouble (StLo* Point , Digits );
   }
 

bana kaybetme işlemlerini nasıl hesaplayacağımı söyle.

yani stop loss ile kapatılan işlemler.

ve karlı bir işlemden sonra sayacı sıfırlayın.

yani kar al ile kapattıktan sonra sayacı sıfırlayın.

İlk sayaç basamağı = 1

 int Schetcik = 1 ;

Alım ve satım için tüm işlemleri saymanız gerekir.

 
Vinin :



Teşekkür ederim! ))) Çok net kıyaslama olmasa da hatayı göremedim
 
belck :

Bana kaybetme işlemlerini nasıl hesaplayacağımı söyle.

yani stop loss ile kapatılan işlemler.

ve karlı bir işlemden sonra sayacı sıfırlayın.

yani kar al ile kapattıktan sonra sayacı sıfırlayın.

İlk sayaç basamağı = 1

Alım ve satım için tüm işlemleri saymanız gerekir.


Zararı durdur ile kapatmak, ticaretin kârsız olduğu anlamına gelmez ve bunun tersi de geçerlidir. Tabii ki, duraklar ve kalkışlar açılışta ayarlanmadıysa ve bir daha dokunulmadıysa.