MQL4 ve MQL5 ile ilgili herhangi bir acemi sorusu, algoritmalar ve kodlar hakkında yardım ve tartışma - sayfa 60
![MQL5 - MetaTrader 5 müşteri terminalinde yerleşik ticaret stratejileri dili](https://c.mql5.com/i/registerlandings/logo-2.png)
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
düzeltilmiş siparişleri kapatmak için blokta bir söve vardı.
Bana siparişlerin neden açılmadığını söyle. 130 hatası veriyor
input double Urov_70= 70 ;
input double Urov_30= 30 ;
input double Lot= 0.01 ;
input int TakeProfit= 100 ;
input int StopLoss= 100 ;
input int MagicNumber= 523 ;
input int slippage= 30 ;
double tp= 0 ,sl= 0 ,OrderBuy= 0 ,OrderSell= 0 ;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
//---
tp= NormalizeDouble (TakeProfit* _Point , _Digits );
sl= NormalizeDouble (StopLoss* _Point , _Digits );
return ( INIT_SUCCEEDED );
//---
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ){}
if ( OrderType ()== OP_SELL ){}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
Ben profesyonel değilim - yanılıyor olabilirim!
işte çizgiler
tp= NormalizeDouble (TakeProfit* _Point , _Digits );sl= NormalizeDouble (StopLoss* _Point , _Digits );
olursa daha net olur
tp= NormalizeDouble ( Ask + TakeProfit* _Point , _Digits );sl= NormalizeDouble ( Bid - StopLoss* _Point , _Digits );
ve ayrıca global değişkenlerde tp ve sl'nin sıfırlanması gerekmez. duyurmak için yeterlidir.
Bana siparişin neden açılmadığını söyle. 130 hatası veriyor
...
Hata 130 - durakları kapatın. Minimum durma mesafesinin boyutunu kontrol edin - StopLevel
Ve evet, yukarıda zaten fark ettiniz - onları yanlış sayıyorsunuz.
Bunu yaptı - hiçbir şey değişmedi
Evet, az önce açıklandı.
input double Urov_70= 70 ;
input double Urov_30= 30 ;
input double Lot= 0.01 ;
input int TakeProfit= 100 ;
input int StopLoss= 100 ;
input int MagicNumber= 523 ;
input int slippage= 30 ;
double tp= 0 ,sl= 0 ,OrderBuy= 0 ,OrderSell= 0 ;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
tp= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
sl= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ){}
if ( OrderType ()== OP_SELL ){}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
///---
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
Bunu yaptı - hiçbir şey değişmedi
input double Urov_70= 70 ;
input double Urov_30= 30 ;
input double Lot= 0.01 ;
input int TakeProfit= 100 ;
input int StopLoss= 100 ;
input int MagicNumber= 523 ;
input int slippage= 30 ;
double tp= 0 ,sl= 0 ,OrderBuy= 0 ,OrderSell= 0 ;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
tp= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
sl= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ){}
if ( OrderType ()== OP_SELL ){}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
///---
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
Durakların hesaplanmasını ontik'e aktarın
sl= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
..
tp= NormalizeDouble ( +TakeProfit* _Point , _Digits ) ;
sl= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
Bu, OP_BUY için bir seçenektir
OP_SELL için
tp= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
sl= NormalizeDouble ( +StopLoss* _Point , _Digits ) ;Hata 148. Her onayda açılır.
input double Urov_70= 70 ;
input double Urov_30= 30 ;
input double Lot= 0.01 ;
input int TakeProfit= 100 ;
input int StopLoss= 100 ;
input int MagicNumber= 523 ;
input int slippage= 30 ;
double tp,sl,OrderBuy= 0 ,OrderSell= 0 ;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ){}
if ( OrderType ()== OP_SELL ){}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
tp= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
sl= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tp= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
sl= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+
iki farklı değer sl tp
Bunları farklı bir şekilde adlandırın: slSell , slBuy, tpSell, tpBuy
iki farklı değer sl tp
Bunları farklı bir şekilde adlandırın: slSell , slBuy, tpSell, tpBuy
Yardım etmedi (
double slSell,slBuy,tpSell,tpBuy;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
for ( int i= 0 ; i< OrdersTotal (); i++)
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ))
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber)
{
if ( OrderType ()== OP_BUY ){}
if ( OrderType ()== OP_SELL ){}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
//+------------------------------------------------------------------+
double StopLossLevel;
double TakeProfitLevel;
if (StopLoss> 0 ) StopLossLevel= Bid -StopLoss* Point ; else StopLossLevel= 0.0 ;
if (TakeProfit> 0 ) TakeProfitLevel= Ask +TakeProfit* Point ; else TakeProfitLevel= 0.0 ;
tpBuy= NormalizeDouble ( Ask +TakeProfit* _Point , _Digits );
slBuy= NormalizeDouble ( Bid -StopLoss* _Point , _Digits );
tpSell= NormalizeDouble ( Bid -TakeProfit* _Point , _Digits );
slSell= NormalizeDouble ( Ask +StopLoss* _Point , _Digits );
///---
if (OrderBuy< 1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrBlue );
}
if (OrderSell< 1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,sl,tp, NULL ,MagicNumber, 0 , clrRed );
}
}
//+------------------------------------------------------------------+