Mevcut bir çubuğu kontrol ediyorsunuz double rsi =iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
Fiyat yükselir, 70 seviyesini geçer ve ticarete giriş olur. Çubuk kapandığında, zaten RSI'nin daha düşük olduğunu görüyorsunuz, ancak bundan önce daha yüksekti ve ardından seviyenin altına geri döndü.
Kapalı bir çubuğu kontrol edin, o zaman bu olmayacak ve girişler onaylanmış bir sinyalde olacaktır:
çift rsi =iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);
Sonuç şudur: Kavşak olmadığında siparişler açılır...
Geçerli çubuğa neden ihtiyacınız var double rsi =iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); ???
Yeniden yazılan kodunuz öncekiyle tamamen aynı koşulu yerine getiriyor, sıfır barda fiyat seviyeyi geçti ve bir anlaşma açıldı, daha sonra fiyat geri döndü ve RSI seviyenin altına döndü, sonuç olarak bar kapandıktan sonra, artık sinyal yok.
Geçerli çubuğa neden ihtiyacınız var double rsi =iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0); ???
Yeniden yazılan kodunuz öncekiyle tamamen aynı koşulu yerine getiriyor, sıfır barda fiyat seviyeyi geçti ve bir anlaşma açıldı, daha sonra fiyat geri döndü ve RSI seviyenin altına döndü, sonuç olarak bar kapandıktan sonra, artık sinyal yok.
MQL5.com web sitesine giriş yapmak için çerezlerin kullanımına izin vermelisiniz.
Lütfen tarayıcınızda gerekli ayarı etkinleştirin, aksi takdirde giriş yapamazsınız.
Hesabınıza giriş yaptınız. İki faktörlü kimlik doğrulama devre dışı bırakıldı. Yeniden kurup yeni bir QR kodu tarayın veya iki faktörlü kimlik doğrulama devre dışıyken devam edin.
Mevcut bir çubuğu kontrol ediyorsunuz double rsi = iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
Fiyat yükselir, 70 seviyesini geçer ve ticarete giriş olur. Çubuk kapandığında, zaten RSI'nin daha düşük olduğunu görüyorsunuz, ancak bundan önce daha yüksekti ve ardından seviyenin altına geri döndü.
Kapalı bir çubuğu kontrol edin, o zaman bu olmayacak ve girişler onaylanmış bir sinyalde olacaktır:
çift rsi = iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 );
Şu şekilde yazılmış: (muhtemelen yanlış)
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
OrderBuy= 0 ; OrderSell= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
double rsi2= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 );
//+------------------------------------------------------------------+
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== 0 && rsi>Urov_70 && rsi1<Urov_70 && rsi2<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (tiket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (OrderSell== 0 && rsi<Urov_30 && rsi1>Urov_30 && rsi2>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (tiket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
Sonuç şudur: Kavşak olmadığında siparişler açılır...
Şu şekilde yazılmış: (muhtemelen yanlış)
}
double rsi= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 );
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
double rsi2= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 );
//+------------------------------------------------------------------+
double StopLossLevel;
Sonuç şudur: Kavşak olmadığında siparişler açılır...
Geçerli çubuğa neden ihtiyacınız var double rsi = iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); ???
Yeniden yazılan kodunuz öncekiyle tamamen aynı koşulu yerine getiriyor, sıfır barda fiyat seviyeyi geçti ve bir anlaşma açıldı, daha sonra fiyat geri döndü ve RSI seviyenin altına döndü, sonuç olarak bar kapandıktan sonra, artık sinyal yok.
Hesaplamada sıfır çubuğunu kullanmayın.
Geçerli çubuğa neden ihtiyacınız var double rsi = iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 0 ); ???
Yeniden yazılan kodunuz öncekiyle tamamen aynı koşulu yerine getiriyor, sıfır barda fiyat seviyeyi geçti ve bir anlaşma açıldı, daha sonra fiyat geri döndü ve RSI seviyenin altına döndü, sonuç olarak bar kapandıktan sonra, artık sinyal yok.
Hesaplamada sıfır çubuğunu kullanmayın.
Söyle neden hata veriyor?
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
OrderBuy= 0 ; OrderSell= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
//double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
double rsi2= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 );
//+------------------------------------------------------------------+
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 (CountBuy()+CountSell()== 0 && rsi1>Urov_70 && rsi2<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (tiket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (CountBuy()+CountSell()== 0 && rsi1<Urov_30 && rsi2>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (tiket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade> 0 ; trade--);
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES )== true )
{
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber && OrderType ()== OP_BUY )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade> 0 ; trade--);
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES )== true )
{
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber && OrderType ()== OP_SELL )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
Söyle neden hata veriyor?
double slSell,slBuy,tpSell,tpBuy,TotalBiu,TotalSell;
int tiket;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit ()
{
return ( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
{
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick ()
{
OrderBuy= 0 ; OrderSell= 0 ;
for ( int i= OrdersTotal ()- 1 ; i>= 0 ; i--) //Цикл по всем ордерам
{
if ( OrderSelect (i, SELECT_BY_POS , MODE_TRADES ) && OrderSymbol ()== Symbol () && OrderMagicNumber ()==MagicNumber) //Выбрали ордер
{
if ( OrderType ()== OP_BUY )
{
OrderBuy++; //Кол. покупок
}
if ( OrderType ()== OP_SELL )
{
OrderSell++; //Кол. продаж
}
}
}
//double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
double rsi1= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 1 );
double rsi2= iRSI ( _Symbol , 0 ,RSIperiod, PRICE_CLOSE , 2 );
//+------------------------------------------------------------------+
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 (CountBuy()+CountSell()== 0 && rsi1>Urov_70 && rsi2<Urov_70)
{
tiket= OrderSend ( _Symbol , OP_BUY ,Lot, Ask ,slippage,slBuy,tpBuy, NULL ,MagicNumber, 0 , clrBlue );
if (tiket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
if (CountBuy()+CountSell()== 0 && rsi1<Urov_30 && rsi2>Urov_30)
{
tiket= OrderSend ( _Symbol , OP_SELL ,Lot, Bid ,slippage,slSell,tpSell, NULL ,MagicNumber, 0 , clrRed );
if (tiket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
}
}
//+------------------------------------------------------------------+
int CountBuy()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade> 0 ; trade--);
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES )== true )
{
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber && OrderType ()== OP_BUY )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
int CountSell()
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade> 0 ; trade--);
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES )== true )
{
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber && OrderType ()== OP_SELL )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
Söyle neden hata veriyor?
for ( int trade= OrdersTotal ()- 1 ; trade> 0 ; trade--);
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES )== true )
{
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber && OrderType ()== OP_SELL )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
ekstra ";"
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade> 0 ; trade--) ; <<<
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber && OrderType ()== OP_BUY )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
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 ()==MagicNumber && OrderType ()== OP_SELL )
count++;
}
}
return (count);
}
Ve böylece bu durumda daha iyi olacak:
bu arada burada
ekstra ";"
{
int count= 0 ;
for ( int trade= OrdersTotal ()- 1 ; trade> 0 ; trade--) ; <<<
{
if ( OrderSelect (trade, SELECT_BY_POS , MODE_TRADES ))
{
if ( OrderSymbol ()== _Symbol && OrderMagicNumber ()==MagicNumber && OrderType ()== OP_BUY )
count++;
}
}
return (count);
}
//+------------------------------------------------------------------+
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 ()==MagicNumber && OrderType ()== OP_SELL )
count++;
}
}
return (count);
}
Ve böylece bu durumda daha iyi olacak:
herkese merhaba, bir ifade nasıl yazılır
beşinci parti, lot 1 ve 4 siparişlerinin toplamına eşittir
ilkini veya sonunu bilet tanımından bulabilirsiniz
ve mevcut şebekedeki sabit değişiklik göz önüne alındığında herhangi bir ara madde nasıl bulunur?
her siparişin bir şekilde ve bir yerde saklanması gerektiği anlamına gelir
peki fark var mı?
arasında
{
if uslovie1== true {...}
if uslovie2== true {...}
if uslovie3== true {...}
}
И
void OnTick ()
{
{
if uslovie1== true
{...}
else if {...}
else if {...}
}
}