ポジションをクローズする。オン表示信号です。 - ページ 2 123456789 新しいコメント Rid 2007.11.25 22:27 #11 私の場合は"<="でしたが、ストキャスティクスの値は1ティックごとに非常に強く変化します。 だから、"="の記号は安心して省略できる。でも、もちろん、考えないようにするために-と思うのです。 Andrey Khatimlianskii 2007.11.26 04:18 #12 エキスパートを見てみると、すべて正しいようです。インジケーターがないため、確認できなかった。 OrderCloseの 前にPrintを追加して、クローズシグナルが表示されるかどうか試してみてください。 Rid 2007.11.26 12:14 #13 完了しました。追加されました。いや、......!?ログブックにClosing Noticeが表示されない。 //********* Закрытие позиций **************************************** if (AutoClose) { //----переменные для закрытия позиций ---- double Stochast_0 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0); double Stochast_1 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1); //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum) { //----------------------------------------------------- if (OrderType() == OP_BUY) { if(Stochast_1>=75 && Stochast_0<75) { Print ( OrderClose(OrderTicket(),OrderLots(),Bid,3,Green)); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { if(Stochast_1<=25 && Stochast_0>25) { Print (OrderClose(OrderTicket(),OrderLots(),Ask,3,Green)); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total } //Close_ //**************************************************************************** 意味がわからない!このブロックは別のEAに入れました。そして3番目は....しかし、状況は変わっていないのです募集は終了して いません。めったにないことですが、まれに(履歴上1~2回=1年)、ビジュアルチャート上で緑の三角形の終値を点滅させることがあります。でも、そんなことはないはずです。ポジションは、コードから判断して、ミシンのシャトルのように閉じるはずです NOnLagMAインジケータをアップロードしました。 ファイル: nonlagma_v5.mq4 6 kb Rid 2007.11.26 12:23 #14 もしかして、このブロックは動かないはず?結局のところ、私たちはオープンするときにコード内の停止を持っている: - ストップロスとtakeprofit。そして、もしかしたら、このために他のすべての閉鎖条件が無視されるのでは? ticket=OrderSend(Symbol(,0,Lots,Ask,Slippage,Bid-SL_long*Point,Ask+TP_long*Point,NULL,MagicNum,0,CLR_NONE)) を実行。 他の方法で対処する必要があります。 Andrey Khatimlianskii 2007.11.26 12:43 #15 rid: 何もわからない! ポジションクロージングブロックは「if(OrdersTotal() == 0)」句の中にありました。 もっと気配りをしてほしい) 以下は、テストバリアント(SLとTPなし、正しいメッセージと不要なスリップなし)のstart()関数です。 int start() { if(Time[0] <= prevtime) return(0); prevtime = Time[0]; if (UseTrailing) TrailPositions(); //---- double NLg_Signal_0 =iCustom(NULL,0,"NonLagMA_v5",0,NLg_Signal,1,0,0,0,0,0,0); double NLg_Signal_1 =iCustom(NULL,0,"NonLagMA_v5",0,NLg_Signal,1,0,0,0,0,0,1); double NLg_long0 =iCustom(NULL,0,"NonLagMA_v5",0,NLg_buy,0,0,0,0,DV_buy,0,0); double NLg_short0 =iCustom(NULL,0,"NonLagMA_v5",0,NLg_sell,0,0,0,0,DV_sell,0,0); if (OrdersTotal() == 0)//если нет открытых позиций { //---------проверяем условие на покупку----------------- if ( (NLg_Signal_1<=NLg_long0) && (NLg_Signal_0>NLg_long0) ) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0.0,0.0, NULL,MagicNum,0,CLR_NONE); if(ticket < 0) { Print("Ошибка #", GetLastError(), " при открытии ордера BUY" ); prevtime = Time[1]; } } //---------проверяем условие на продажу----------------- if ( (NLg_Signal_1>=NLg_short0) && (NLg_Signal_0<NLg_short0) ) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0.0,0.0, NULL,MagicNum,0,CLR_NONE); if(ticket < 0) { Print("Ошибка #", GetLastError(), " при открытии ордера SELL" ); prevtime = Time[1]; } } } //------------------------------------------------------------------ //********* Закрытие позиций **************************************** if (AutoClose) { //----переменные для закрытия позиций ---- double Stochast_0 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0); double Stochast_1 =iStochastic(NULL,0,Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1); //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MagicNum) { //----------------------------------------------------- if (OrderType() == OP_BUY) { if(Stochast_1>75 && Stochast_0<75) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { if(Stochast_1<25 && Stochast_0>25) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total } //Close_ //**************************************************************************** return(0); } しかし、私があなただったら、このEAを実際の口座で使うことはしないでしょう。順番に、あるいは「準備」しておく必要があります ;) Rid 2007.11.26 12:53 #16 はい、もちろんです。ご協力ありがとうございました私のミスについてのコメント、了解しました。 そして、あなたの推薦をメモしておきました。本格的な取引はまだ先だが...。 p.s/ すべてがうまくいっている...。!そして、その効果はいかに!? Rid 2007.11.26 13:41 #17 このような閉鎖によって利益が増加することは当然ありません。しかし、ドローダウンが......。大幅に減少することが多い。 Alexander Sevastyanov 2007.11.26 19:56 #18 komposter: コードは見ていない。 ただ、ひとつだけ確かなことは、「if(Stochast_1>75 && Stochast_0<75)」ではなく、「if(Stochast_1>75 && Stochast_0<=75)」にすることです。 より良い方法は、int型と double型の不要な変換を避けるために、 if(Stochast_1-75.0>0 && Stochast_0-75.0<=0) とすることであろう。 Rid 2007.11.26 21:54 #19 また、不必要なintやdoubleを避けるにはどうしたらよいのでしょう。?さらに、extern int Up_lim = 80; extern int Low_lim = 20 というように、数値を外部パラメータに置き換えることも可能です。 Alexander Sevastyanov 2007.11.26 23:02 #20 rid: また、不必要なintやdoubleを避けるにはどうしたらよいのでしょう。?解らないんです。また、数値の代わりに外部パラメータを使用することもできます extern int Up_lim = 80; extern int Low_lim = 20; 第一に、実数のStochast_と整数の75を比較するのは誤りであり、第二に、それらの差を0と比較するのがより正しいのです。 '実数の比較'。 123456789 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
私の場合は"<="でしたが、ストキャスティクスの値は1ティックごとに非常に強く変化します。
だから、"="の記号は安心して省略できる。でも、もちろん、考えないようにするために-と思うのです。
OrderCloseの 前にPrintを追加して、クローズシグナルが表示されるかどうか試してみてください。
完了しました。追加されました。いや、......!?ログブックにClosing Noticeが表示されない。
意味がわからない!このブロックは別のEAに入れました。そして3番目は....しかし、状況は変わっていないのです募集は終了して いません。めったにないことですが、まれに(履歴上1~2回=1年)、ビジュアルチャート上で緑の三角形の終値を点滅させることがあります。でも、そんなことはないはずです。ポジションは、コードから判断して、ミシンのシャトルのように閉じるはずです
NOnLagMAインジケータをアップロードしました。
もしかして、このブロックは動かないはず?結局のところ、私たちはオープンするときにコード内の停止を持っている: - ストップロスとtakeprofit。そして、もしかしたら、このために他のすべての閉鎖条件が無視されるのでは?
ticket=OrderSend(Symbol(,0,Lots,Ask,Slippage,Bid-SL_long*Point,Ask+TP_long*Point,NULL,MagicNum,0,CLR_NONE)) を実行。
他の方法で対処する必要があります。
何もわからない!
もっと気配りをしてほしい)
以下は、テストバリアント(SLとTPなし、正しいメッセージと不要なスリップなし)のstart()関数です。
しかし、私があなただったら、このEAを実際の口座で使うことはしないでしょう。順番に、あるいは「準備」しておく必要があります ;)
はい、もちろんです。ご協力ありがとうございました私のミスについてのコメント、了解しました。
そして、あなたの推薦をメモしておきました。本格的な取引はまだ先だが...。
p.s/ すべてがうまくいっている...。!そして、その効果はいかに!?
コードは見ていない。
ただ、ひとつだけ確かなことは、「if(Stochast_1>75 && Stochast_0<75)」ではなく、「if(Stochast_1>75 && Stochast_0<=75)」にすることです。
より良い方法は、int型と double型の不要な変換を避けるために、 if(Stochast_1-75.0>0 && Stochast_0-75.0<=0) とすることであろう。
また、不必要なintやdoubleを避けるにはどうしたらよいのでしょう。?解らないんです。また、数値の代わりに外部パラメータを使用することもできます extern int Up_lim = 80; extern int Low_lim = 20;
第一に、実数のStochast_と整数の75を比較するのは誤りであり、第二に、それらの差を0と比較するのがより正しいのです。
'実数の比較'。