エラー4756 - ページ 3

 
BHC:

私のEAはビルド778で奇妙なエラーを起こしています。0.1のボリュームは正規化されており、明らかに無効ではありません。

シルバーのシンボルプロパティをチェックして、SYMBOL_VOLUME_MIN と SYMBOL_VOLUME_STEP が何であるかを教えてください。 例えばボリュームステップが 0.5 であれば、ノーマライズだけでは役に立ちません。
 
RaptorUK:
シルバーのシンボルプロパティを確認して、SYMBOL_VOLUME_MIN と SYMBOL_VOLUME_STEP が何であるかを教えてください。 ノーマライズだけでは不十分で、例えばボリュームステップが 0.5 であれば、ノーマライズでは役に立ちません。

このソース

Print(" volume step: ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_STEP),", volume minimum: ",", ",SymbolInfoDouble(_trade_symbol,SYMBOL_VOLUME_MIN)); return;
         

テスターのログにはこのように表示されます...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 ボリュームステップ: 0.1, ボリューム最小値:, 0.1

 
BHC:

このソース

テスターのログにはこのように表示されます...

2013.03.12 12:46:01 Core 1 2013.01.23 13:32:59 ボリュームステップ: 0.1, ボリューム最小値:, 0.1

問題はあなたのエラーレポートにあるかもしれません、私はmql5で確認して いませんが、これはmql4で動作しません... ...

if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

代わりにこれを試してみてください。

if( _result.retcode != 0 && _result.retcode != TRADE_RETCODE_PLACED && _result.retcode != TRADE_RETCODE_DONE )
 
これでエラーは解消されました!Thx
 
BHC:
これでエラーは解消されました!Thx
if(_result.retcode != ( 0 || TRADE_RETCODE_PLACED || TRADE_RETCODE_DONE))

この構文が有効な言語はありますか?

 
私も実は出会ったことがなかったのですが...。誰かのordercheckの実装から得たものだと思います。このサイトにありました...
 
angevoyageur:

この構文が有効な言語はありますか?

おそらく、変数がbool型であれば、何らかの意味があるのでしょう。mql4のフォーラムで同じようなことをしている人を何人か見ましたが、簡単な間違いです。
 
RaptorUK:
これはあなたが見つけたスレッドでしたか?https://www.mql5.com/en/forum/10850 それは私が持っているのと同じ問題を報告します。

このスレッドは見ていません。

解決策は、私が言ったように、OnTradeTransaction()イベントハンドラ(このコードをそのまま使用しないでください、それは試用とテストのためのものです)です。

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
                        {

    if (trans.type == TRADE_TRANSACTION_DEAL_ADD) {

        if (execution == SYMBOL_TRADE_EXECUTION_MARKET) {
            if (!trade.PositionModify(_Symbol, _sl, _tp))
                if (debugMode) {
                    Print("Modify SL & TP failed. Return code=", trade.ResultRetcode(), ". Code description: ", trade.ResultRetcodeDescription());
                    Print("Deal ticket : ", trans.deal);
                }
            else
                if (debugMode) Print("Modify SL & TP executed successfully. Return code=", trade.ResultRetcode(), " (", trade.ResultRetcodeDescription(),")");
        }

    }
}   

それは働いている。tradeはCTradeクラスタイプです。OrderSend()でも同じようなことができるのでしょう。

 
angevoyageur:

このスレッドは見ていません。

解決策は、私が言ったように、OnTradeTransaction()イベントハンドラです(このコードをそのまま使用しないでください、これは試用とテストのためです)。

うまくいっていますね。slと_tpはグローバル変数なので、きっとローカルで処理した方がいいのでしょう。tradeはCTradeクラス型です。OrderSend()でも同じようなことができるんでしょうね。

私は基本を学ぶためにCTradeクラスから遠ざかっています。私はOOPを使ったことがないので、クラスや構造などはすべてmql5での学習曲線の一部です。

OnTradeTransaction()は回避策を提供してくれると思いますが、私が取り組んでいるシンプルなEAでも使うにはかなり恐ろしいもののように思えます。と思うのですが、Strategy Testerでも同じ問題が発生していることを確認します。具体的にどのように発生するのかは不明ですが、念のためエラーレポートを追加して再度試してみます。

 
RaptorUK:

私はOOPを使ったことがないので、クラスや構造などはすべてmql5での学習曲線の一部です。

OnTradeTransaction()は回避策を提供してくれると思いますが、私が取り組んでいるシンプルなEAでも使うにはかなり恐ろしいもののように思えます。と思うのですが、Strategy Testerでも同じ問題が発生していることを確認しました。具体的にどのように発生するのかはわかりませんが、念のためエラーレポートを追加してもう一度試してみます。

OOPについてのあなたの立場は理解できます。 伝統的な」アプローチよりも常に 時間がかかり、大規模(または中規模)なプロジェクトでは本当に有用 です。

私たちの問題に対する「古典的」なソリューションが存在するのかどうか、非常に興味が あります。