MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 60 1...535455565758596061626364656667...1953 新しいコメント Anarchist 2017.01.08 17:29 #591 Sergey Gritsay: 注文の締めブロックに不具合がありましたので、修正しました。 ありがとうございます。 削除済み 2017.01.08 17:55 #592 なぜ注文が開けないのか、教えてください。エラー 130 が表示されます。input double RSIperiod=14;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); } }//+------------------------------------------------------------------+ Any questions from newcomers 初心者の方からの質問 MQL4 MT4 MetaTrader PROBLEM RichLux 2017.01.08 18:04 #593 私はプロではないので、間違っているかもしれません。ここんとこtp=NormalizeDouble(TakeProfit*_Point,_Digits)。sl=NormalizeDouble(StopLoss*_Point,_Digits)。こんな感じで行くと、より理解しやすいと思います。tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits)。sl=NormalizeDouble(Bid-StopLoss*_Point,_Digits)。また、グローバル変数 tpとslをゼロにする必要はありません。 Artyom Trishkin 2017.01.08 18:04 #594 Ibragim Dzhanaev:なぜ注文が開けないのか、教えてください。130エラー です。...エラー130は、クローズドストップです。最小停止距離のチェック - StopLevelそして、そう、すでに上で述べたように、あなたは間違った計算をしているのです。 削除済み 2017.01.08 18:15 #595 そうしたら、何も変わらなかった(はい、発表したばかりです。input double RSIperiod=14;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); } }//+------------------------------------------------------------------+ Any questions from newcomers 初心者の方からの質問 MQL4 MT4 MetaTrader [アーカイブ!】どんなエキスパートやインジケーターでも無料で書きます。 Sergey Gritsay 2017.01.08 18:19 #596 Ibragim Dzhanaev:そうしたら、何も変わらなかった(input double RSIperiod=14;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); } }//+------------------------------------------------------------------+ストップの計算をオンティックに移動させる tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); sl=NormalizeDouble(Bid-StopLoss*_Point,_Digits);.. RichLux 2017.01.08 18:19 #597 tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits); sl=NormalizeDouble(Bid-StopLoss*_Point,_Digits);OP_BUYのバリアントです。OP_SELL用tp=NormalizeDouble(Bid-TakeProfit*_Point,_Digits) となります。sl=NormalizeDouble(Ask+StopLoss*_Point,_Digits)。 削除済み 2017.01.08 18:32 #598 エラー148クリック するごとに開きます。input double RSIperiod=14;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); } }//+------------------------------------------------------------------+ Any questions from newcomers 初心者の方からの質問 MQL4 MT4 MetaTrader [アーカイブ!】どんなエキスパートやインジケーターでも無料で書きます。 RichLux 2017.01.08 18:56 #599 2つの異なる値のsl tpslSell , slBuy, tpSell, tpBuy のように呼び方を変える。 削除済み 2017.01.08 19:05 #600 RichLux:2つの異なる値のsl tpslSell , slBuy, tpSell, tpBuy のように呼び方を変える。役に立たなかった(double tp,sl,OrderBuy=0,OrderSell=0;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); } }//+------------------------------------------------------------------+ Any questions from newcomers 初心者の方からの質問 MQL4 MT4 MetaTrader [アーカイブ!】どんなエキスパートやインジケーターでも無料で書きます。 1...535455565758596061626364656667...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
注文の締めブロックに不具合がありましたので、修正しました。
なぜ注文が開けないのか、教えてください。エラー 130 が表示されます。
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);
}
}
//+------------------------------------------------------------------+
私はプロではないので、間違っているかもしれません。
ここんとこ
tp=NormalizeDouble(TakeProfit*_Point,_Digits)。sl=NormalizeDouble(StopLoss*_Point,_Digits)。
こんな感じで行くと、より理解しやすいと思います。
tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits)。sl=NormalizeDouble(Bid-StopLoss*_Point,_Digits)。
また、グローバル変数 tpとslをゼロにする必要はありません。
なぜ注文が開けないのか、教えてください。130エラー です。
...
エラー130は、クローズドストップです。最小停止距離のチェック - StopLevel
そして、そう、すでに上で述べたように、あなたは間違った計算をしているのです。
そうしたら、何も変わらなかった(
はい、発表したばかりです。
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);
}
}
//+------------------------------------------------------------------+
そうしたら、何も変わらなかった(
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);
}
}
//+------------------------------------------------------------------+
ストップの計算をオンティックに移動させる
sl=NormalizeDouble(Bid-StopLoss*_Point,_Digits);
..
tp=NormalizeDouble(Ask+TakeProfit*_Point,_Digits);
sl=NormalizeDouble(Bid-StopLoss*_Point,_Digits);
OP_BUYのバリアントです。
OP_SELL用
tp=NormalizeDouble(Bid-TakeProfit*_Point,_Digits) となります。
sl=NormalizeDouble(Ask+StopLoss*_Point,_Digits)。エラー148クリック するごとに開きます。
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);
}
}
//+------------------------------------------------------------------+
2つの異なる値のsl tp
slSell , slBuy, tpSell, tpBuy のように呼び方を変える。
2つの異なる値のsl tp
slSell , slBuy, tpSell, tpBuy のように呼び方を変える。
役に立たなかった(
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);
}
}
//+------------------------------------------------------------------+