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;
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?
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.....
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
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.
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.
Zhunko :
eğilim çizgileri.
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.
Ama bu pek yardımcı olmadı. TaPr ve StLo= 100 iken PR, SL ve TP nedense sıfırdır.....Haklısın. Bu şekilde gerçekten daha mantıklı. Sabit:
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
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
Ve daha ayrıntılı olarak? Bana bir link verebilir misin, nereden okuyabilirim?
Siz kendiniz çizelgeye koyana kadar Expert Advisor'ın çalışması sırasında yansımayacaktır. Bunu nasıl yaptın?
Ama bu pek yardımcı olmadı. TaPr ve StLo= 100 iken PR, SL ve TP nedense sıfırdır.....Haklısın. Bu şekilde gerçekten daha mantıklı. Sabit:
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.
Teşekkür ederim! ))) Çok net kıyaslama olmasa da hatayı göremedim
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.