Meşgul olmayan ve bakabilen adamlar. dünkü hindi için bir danışman çizdi, ama bir şey böyle çalışmıyor. Görünüşe göre alım satımları sinyallerle değil. Ve karşı sinyalde anlaşmaları kapatmak için koşulları eklemeye çalıştım, ancak anlaşmalar ya kapandı ya da kapanmadı. hatayı bulmaya yardım edin. Belki durumda bir hata var?
inputint Magic = 000 ;
inputdouble Lots = 0.1 ;
inputint TakeProfit = 100 ;
inputint StopLoss = 50 ;
inputint Slippage = 5 ;
double vverh,vnuz,SL,TP;
int tiket;
//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit ()
{
//---/* if (Digits == 3 || Digits == 5)
{
TakeProfit *=10;
StopLoss *=10;
Slippage *=10;
}*///---return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit ( constint reason)
{
//---
}
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick ()
{
//---
vverh = iCustom ( NULL , 0 , "777" , 0 , 1 ); // стрелка вверх
vnuz = iCustom ( NULL , 0 , "777" , 1 , 1 ); // стрелка вниз//-----------------------------------------------------------if (CountSell() == 0 && vnuz > 0 )
{
tiket = OrderSend ( Symbol (),OP_SELL,Lots,Bid,Slippage, 0 , 0 , "" ,Magic, 0 , Red);
if (tiket> 0 )
{
SL= NormalizeDouble (Bid+StopLoss* Point , Digits );
TP= NormalizeDouble (Bid-TakeProfit* Point , Digits );
if ( OrderSelect (tiket, SELECT_BY_TICKET))
if (!OrderModify(tiket,OrderOpenPrice(),SL,TP, 0 ))
Print ( "Ошибка модификации ордера на продажу" );
} elsePrint ( "Ошибка открытия ордера на продажу" );
}
////////////////////////////////////////////////////////////////if (CountBuy() == 0 && vverh > 0 )
{
tiket = OrderSend ( Symbol (),OP_BUY,Lots,Ask,Slippage, 0 , 0 , "" ,Magic, 0 ,Blue);
if (tiket> 0 )
{
TP= NormalizeDouble (Ask+TakeProfit* Point , Digits );
SL= NormalizeDouble (Ask-StopLoss* Point , Digits );
if ( OrderSelect (tiket, SELECT_BY_TICKET))
if (!OrderModify(tiket,OrderOpenPrice(),SL,TP, 0 ))
Print ( "Ошибка модификации ордера на покупку" );
} elsePrint ( "Ошибка открытия ордера на покупку" );
}
}
//+------------------------------------------------------------------+int CountSell()
{
int count = 0 ;
for ( int trade = OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic && OrderType() == OP_SELL)
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+int CountBuy()
{
int count = 0 ;
for ( int trade = OrdersTotal ()- 1 ; trade>= 0 ; trade--)
{
if ( OrderSelect (trade,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()== Symbol () && OrderMagicNumber()==Magic && OrderType()==OP_BUY)
count++;
}
}
return (count);
}
jarikn : Meşgul olmayan ve bakabilen adamlar. dünkü hindi için bir danışman çizdi, ama bir şey böyle çalışmıyor. Görünüşe göre alım satımları sinyallerle değil. Ve karşı sinyalde anlaşmaları kapatmak için koşulları eklemeye çalıştım, ancak anlaşmalar ya kapandı ya da kapanmadı. hatayı bulmaya yardım edin. Belki durumda bir hata var?
Büyük olasılıkla gösterge çizer ... ve ayrıca günlükte hatalar arar
Ne sebeple? Neden neyin yanlış olduğunu yazmıyorsun?
çünkü geliştiriciler OnInit() öğesinin başlatma için olduğunu ve başka bir şey için olmadığını yazdı
Ne olacağını tahmin etmeyeceğim, ilk gördüğüm şey, OnInit ()'deki gösterge değerlerini almak için duraklamış olmanız - kullanıcı şu anda TF'yi değiştirirse ne olacak?
Not: Expert Advisor'ı çalıştırırsanız, ardından terminali kapatıp , Expert Advisor zaten çalışıyorken terminali tekrar açarsanız kodunuz nasıl davranacak?
Apaçık. Teşekkür ederim. Belki başka biri tavsiye verebilir?
bu arada ben de seninle okudum
Sadece durduğunda şaşırmayın. Ya da arada bir işe yarayacaktır .
Ne sebeple? Neden neyin yanlış olduğunu yazmıyorsun?
Ne sebeple? Neden neyin yanlış olduğunu yazmıyorsun?
Ne tür baskınlar?
Ne tür baskınlar?
Apaçık.
Başka biri bana orada neyin yanlış olduğunu söyleyebilir mi ve bir şeyler gerçekten yanlışsa hangi nedenle çalışmayı durduracak?
Apaçık.
Başka biri bana orada neyin yanlış olduğunu söyleyebilir mi ve bir şeyler gerçekten yanlışsa hangi nedenle çalışmayı durduracak?
Ticaret, otomatik ticaret sistemleri ve ticaret stratejilerinin test edilmesi hakkında forum
MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma
İgor Makanu , 2021.07.05 14:16
çünkü gösterge henüz hesaplanmadı
https://www.mql5.com/ru/docs/series/barshesaplanmış
OnInit() bölümü, terminal ortamını elde etmek için en iyi yer değil, bence her şey mantıklı ve doğru çalışıyorişte cevap
Teşekkürler.
Başlangıçta hemen geçmiş üzerinde hesaplamalar yapmak gerekir. İhtiyaç böyle olduğu için internet üzerinden yapıyorum.
Hesaplamalardan önce internette bir duraklama eklendi. Eğer öyleyse, o zaman hepsi aynı, bazı "tuzaklar"?
Başlangıçta hemen geçmiş üzerinde hesaplamalar yapmak gerekir. İhtiyaç böyle olduğu için internet üzerinden yapıyorum.
Hesaplamalardan önce internette bir duraklama eklendi. Eğer öyleyse, hepsi aynı, bazı "tuzaklar"?
OnTick()'te ilk çalıştırma bayrağını ayarlamak daha kolay ve daha güvenilirdir.
Meşgul olmayan ve bakabilen adamlar. dünkü hindi için bir danışman çizdi, ama bir şey böyle çalışmıyor. Görünüşe göre alım satımları sinyallerle değil. Ve karşı sinyalde anlaşmaları kapatmak için koşulları eklemeye çalıştım, ancak anlaşmalar ya kapandı ya da kapanmadı. hatayı bulmaya yardım edin. Belki durumda bir hata var?
Ne sebeple? Neden neyin yanlış olduğunu yazmıyorsun?
çünkü geliştiriciler OnInit() öğesinin başlatma için olduğunu ve başka bir şey için olmadığını yazdı
Ne olacağını tahmin etmeyeceğim, ilk gördüğüm şey, OnInit ()'deki gösterge değerlerini almak için duraklamış olmanız - kullanıcı şu anda TF'yi değiştirirse ne olacak?
Not: Expert Advisor'ı çalıştırırsanız, ardından terminali kapatıp , Expert Advisor zaten çalışıyorken terminali tekrar açarsanız kodunuz nasıl davranacak?