MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 62 1...555657585960616263646566676869...1953 新しいコメント Sergey Dymov 2017.01.08 21:04 #611 負けたトレードと儲かったトレードのストライクの分布を見たいのですが・・・。アレイが苦手なんです。負けた後の売りPrice_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=true; k=k+1;/* Buf1[p]=Buf1[p]+1; p=0;Alert("Profitable ", Buf1[1], ", Buf1[2], ", Buf1[3], ", Buf1[4], ", Buf1[5], ", Buf1[6], ", Buf1[7], ", Buf1[8], ", Buf1[9], ", Buf1[10]); */。売り上がりPrice_LastSell=5; Vol=VolumeOpen; Izm=2; Opn_S=true; p=p+1;/* Buf2[k]=Buf2[k]+1; k=0;アラート(「損失額」、Buf2[1]、「」、Buf2[2]、「」、Buf2[3]、「」、Buf2[4]、「」、Buf2[5]、「」)。", Buf2[6], ", Buf2[7], ", Buf2[8], ", Buf2[9], ", Buf2[10], ", Buf2[11], ", Buf2[12], ", Buf2[13], ", Buf2[14], ", Buf2[15]); */。どうしたんですか?/* に書き込まなければ、すべてうまくいくのですが...。 Any questions from newcomers Question - Open Order [アーカイブ!】純粋数学、物理学、化学など:トレードとは一切関係ない脳トレ問題集 Artyom Trishkin 2017.01.08 21:08 #612 Сергей:負けたトレードと儲かったトレードのストライクの分布を見たいのですが・・・。アレイが苦手なんです。負けた後の売りPrice_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=true; k=k+1;/* Buf1[p]=Buf1[p]+1; p=0;Alert ("Profitable ", Buf1[1], ", Buf1[2], ", Buf1[3], ", Buf1[4], ", Buf1[5], ", Buf1[6], ", Buf1[7], ", Buf1[8], ", Buf1[9], ", Buf1[10]); */。売り上がりPrice_LastSell=5; Vol=VolumeOpen; Izm=2; Opn_S=true; p=p+1;/* Buf2[k]=Buf2[k]+1; k=0;アラート(「損失額」、Buf2[1]、「」、Buf2[2]、「」、Buf2[3]、「」、Buf2[4]、「」、Buf2[5]、「」)。", Buf2[6], ", Buf2[7], ", Buf2[8], ", Buf2[9], ", Buf2[10], ", Buf2[11], ", Buf2[12], ", Buf2[13], ", Buf2[14], ", Buf2[15]); */。どうしたんですか?/* に書き込まなければ、すべてうまくいくのですが...。 ああ...ストリック」とは誰のことで、「彼らの分布」はどうなっているのか? Sergey Dymov 2017.01.08 21:54 #613 負けたトレードと儲かったトレードの連続。分布 - 例えば、私たちは360の負けトレード(これはレポートで見ることができます)、1負けトレードの110シリーズ、2負けトレードの80シリーズ、3負けトレードの30シリーズを持っています。私はこのようにしました。負けトレードを特定した後k=k+1である。収益性の高いトレードを決定した後if k==1 {k1=k1+1;}.if k==2 {k2=k2+1;}.if k==3 {k3=k3+1;}.k=0;しかし、この表記は15個以上の損失がある系列では大きすぎて不便である Artyom Trishkin 2017.01.08 22:10 #614 Сергей:負けたトレードと儲かったトレードの連続。分布 - 例えば、私たちは360の負けトレード(これはレポートで見ることができます)、1負けトレードの110シリーズ、2負けトレードの80シリーズ、3負けトレードの30シリーズを持っています。私はこのようにしました。負けトレードを特定した後k=k+1である。収益性の高いトレードを決定した後if k==1 {k1=k1+1;}.if k==2 {k2=k2+1;}.if k==3 {k3=k3+1;}.k=0;しかし、この表記は15個以上の損失がある系列では大きすぎて不便であるあなたの課題がよくわからないのですが。最後に利益を得た/損失を出したポジションの系列を決定する必要があるのか、それとも取引履歴全体からこれらの系列をすべて収集する必要があるのか。 Sergey Dymov 2017.01.08 22:19 #615 歴史の中でテスト終了時にデータを収集し、出力する。しかし、私は単純に、連続した損失の後の最初の利益の後に、カンマで区切られた数字を出力するようにしています...。しかし、私はコードを簡素化し、配列を使用したい。 それは可能ですか? また、それを行うための最良の方法は何ですか? Sergey Gritsay 2017.01.08 23:17 #616 Ibragim Dzhanaev:これを実行したところ、すべてのティックで 開くのではなく、入力に信号を渡すようになりました...double tp,sl,OrderBuy=0,OrderSell=0;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() { for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер { if(OrderType()==OP_BUY) { TotalBiu++; //Кол. покупок } if(OrderType()==OP_SELL) { TotalSell++; //Кол. продаж } } } 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(TotalBiu==0) if(OrderBuy<1 && rsi>Urov_70 && rsi1<Urov_70) { tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue); } if(TotalSell==0) if(OrderSell<1 && rsi<Urov_30 && rsi1>Urov_30) { tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed); } }//+------------------------------------------------------------------+を調整し、動作するようにしました。double tp,sl,OrderBuy=0,OrderSell=0;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() { 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 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) { tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue); if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30) { tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed); if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } }//+------------------------------------------------------------------+... Any questions from newcomers 初心者の方からの質問 MQL4 MT4 MetaTrader PROBLEM Vitaly Muzichenko 2017.01.09 03:40 #617 Sergey Gritsay:修正しました、正常に動作するはずです。//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+void OnTick() { 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 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() { 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);//+------------------------------------------------------------------+ 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) { tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue); if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30) { tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed); if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } }//+------------------------------------------------------------------+ Any questions from newcomers 初心者の方からの質問 MQL4 MT4 MetaTrader PROBLEM 削除済み 2017.01.09 08:31 #618 Vitaly Muzichenko:を強調する必要があります。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() { 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);//+------------------------------------------------------------------+ 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) { tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue); if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30) { tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed); if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError()); } }//+------------------------------------------------------------------+ありがとうございます。現在、いくつかの注文がシグナル上に表示されず、また正しく表示されないものがあります。 削除済み 2017.01.09 08:36 #619 Sergey Gritsay:修正しました、正常に動作するはずです。 ... あなたが書いたものは何の役にも立たなかった...。 Vitaly Muzichenko 2017.01.09 09:02 #620 Ibragim Dzhanaev:ありがとうございます。現在、いくつかの注文がシグナル上に表示されず、また正しく表示されないものがあります。既存のバーでチェックしますdouble rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);価格が上昇し、70レベルのクロスがあり、取引に入ります。バーを閉じるという事実で、あなたはすでにRSIが低くなっていることがわかりますが、その前にそれは高く、その後、レベルの下に戻ってきました。閉じたバーでチェックすれば、このようなことは起こらず、確定したシグナルでエントリーすることができます。double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2); 1...555657585960616263646566676869...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
負けたトレードと儲かったトレードのストライクの分布を見たいのですが・・・。アレイが苦手なんです。
負けた後の売り
Price_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=true; k=k+1;
/* Buf1[p]=Buf1[p]+1; p=0;
Alert("Profitable ", Buf1[1], ", Buf1[2], ", Buf1[3], ", Buf1[4], ", Buf1[5], ", Buf1[6], ", Buf1[7], ", Buf1[8], ", Buf1[9], ", Buf1[10]); */。
売り上がり
Price_LastSell=5; Vol=VolumeOpen; Izm=2; Opn_S=true; p=p+1;
/* Buf2[k]=Buf2[k]+1; k=0;
アラート(「損失額」、Buf2[1]、「」、Buf2[2]、「」、Buf2[3]、「」、Buf2[4]、「」、Buf2[5]、「」)。", Buf2[6], ", Buf2[7], ", Buf2[8], ", Buf2[9], ", Buf2[10], ", Buf2[11], ", Buf2[12], ", Buf2[13], ", Buf2[14], ", Buf2[15]); */。
どうしたんですか?/* に書き込まなければ、すべてうまくいくのですが...。
負けたトレードと儲かったトレードのストライクの分布を見たいのですが・・・。アレイが苦手なんです。
負けた後の売り
Price_LastSell=5; Vol=Vol*Y; Izm=2; Opn_B=true; k=k+1;
/* Buf1[p]=Buf1[p]+1; p=0;
Alert ("Profitable ", Buf1[1], ", Buf1[2], ", Buf1[3], ", Buf1[4], ", Buf1[5], ", Buf1[6], ", Buf1[7], ", Buf1[8], ", Buf1[9], ", Buf1[10]); */。
売り上がり
Price_LastSell=5; Vol=VolumeOpen; Izm=2; Opn_S=true; p=p+1;
/* Buf2[k]=Buf2[k]+1; k=0;
アラート(「損失額」、Buf2[1]、「」、Buf2[2]、「」、Buf2[3]、「」、Buf2[4]、「」、Buf2[5]、「」)。", Buf2[6], ", Buf2[7], ", Buf2[8], ", Buf2[9], ", Buf2[10], ", Buf2[11], ", Buf2[12], ", Buf2[13], ", Buf2[14], ", Buf2[15]); */。
どうしたんですか?/* に書き込まなければ、すべてうまくいくのですが...。
負けたトレードと儲かったトレードの連続。分布 - 例えば、私たちは360の負けトレード(これはレポートで見ることができます)、1負けトレードの110シリーズ、2負けトレードの80シリーズ、3負けトレードの30シリーズを持っています。
私はこのようにしました。
負けトレードを特定した後
k=k+1である。
収益性の高いトレードを決定した後
if k==1 {k1=k1+1;}.
if k==2 {k2=k2+1;}.
if k==3 {k3=k3+1;}.
k=0;
しかし、この表記は15個以上の損失がある系列では大きすぎて不便である
負けたトレードと儲かったトレードの連続。分布 - 例えば、私たちは360の負けトレード(これはレポートで見ることができます)、1負けトレードの110シリーズ、2負けトレードの80シリーズ、3負けトレードの30シリーズを持っています。
私はこのようにしました。
負けトレードを特定した後
k=k+1である。
収益性の高いトレードを決定した後
if k==1 {k1=k1+1;}.
if k==2 {k2=k2+1;}.
if k==3 {k3=k3+1;}.
k=0;
しかし、この表記は15個以上の損失がある系列では大きすぎて不便である
あなたの課題がよくわからないのですが。
最後に利益を得た/損失を出したポジションの系列を決定する必要があるのか、それとも取引履歴全体からこれらの系列をすべて収集する必要があるのか。
これを実行したところ、すべてのティックで 開くのではなく、入力に信号を渡すようになりました...
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()
{
for(int i=OrdersTotal()-1; i>=0; i--) //Цикл по всем ордерам
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) //Выбрали ордер
{
if(OrderType()==OP_BUY)
{
TotalBiu++; //Кол. покупок
}
if(OrderType()==OP_SELL)
{
TotalSell++; //Кол. продаж
}
}
}
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(TotalBiu==0)
if(OrderBuy<1 && rsi>Urov_70 && rsi1<Urov_70)
{
tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue);
}
if(TotalSell==0)
if(OrderSell<1 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed);
}
}
//+------------------------------------------------------------------+
を調整し、動作するようにしました。
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()
{
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 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)
{
tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue);
if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed);
if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
}
//+------------------------------------------------------------------+
...
修正しました、正常に動作するはずです。
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
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 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()
{
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);
//+------------------------------------------------------------------+
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)
{
tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue);
if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed);
if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
}
//+------------------------------------------------------------------+
を強調する必要があります。
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()
{
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);
//+------------------------------------------------------------------+
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)
{
tiket=OrderSend(_Symbol,OP_BUY,Lot,Ask,slippage,slBuy,tpBuy,NULL,MagicNumber,0,clrBlue);
if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
if(OrderSell==0 && rsi<Urov_30 && rsi1>Urov_30)
{
tiket=OrderSend(_Symbol,OP_SELL,Lot,Bid,slippage,slSell,tpSell,NULL,MagicNumber,0,clrRed);
if(ticket<0)Print("Ошибка открытия ордера № - ",GetLastError());
}
}
//+------------------------------------------------------------------+
ありがとうございます。現在、いくつかの注文がシグナル上に表示されず、また正しく表示されないものがあります。
修正しました、正常に動作するはずです。
...
ありがとうございます。現在、いくつかの注文がシグナル上に表示されず、また正しく表示されないものがあります。
既存のバーでチェックしますdouble rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,0);
価格が上昇し、70レベルのクロスがあり、取引に入ります。バーを閉じるという事実で、あなたはすでにRSIが低くなっていることがわかりますが、その前にそれは高く、その後、レベルの下に戻ってきました。
閉じたバーでチェックすれば、このようなことは起こらず、確定したシグナルでエントリーすることができます。
double rsi=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,1);
double rsi1=iRSI(_Symbol,0,RSIperiod,PRICE_CLOSE,2);