参議院の実施について議論。 - ページ 2

 
Georgiy Merts:

また、このフォーラム参加者自身も、質問されたときに「もう覚えていない」と言い、「このコードはすでに何度もテストされており、信頼できる」とだけ言っています。

まあ、このくだらない「質問」を本当のif文に置き換える機会があれば、その方法を考えてみますが...。今のところ...

ところで、今日、このホラーを見てみた。

その意味はこうです。

ENUM_ORDER_TYPE_FILLING otfMyRes  = WRONG_VALUE;   

if(iFillingMode == 0 || (otfFilingType >= ORDER_FILLING_RETURN) || ((iFillingMode & (otfFilingType + 1)) != otfFilingType + 1))
	{
        if(steExeMode == SYMBOL_TRADE_EXECUTION_EXCHANGE || steExeMode == SYMBOL_TRADE_EXECUTION_INSTANT)
                otfMyRes = ORDER_FILLING_RETURN;
        else   
                if(iFillingMode == SYMBOL_FILLING_IOC)
                        otfMyRes = ORDER_FILLING_IOC;
                else
                        otfMyRes = ORDER_FILLING_FOK;
        }
   else      
        otfMyRes = otfFilingType;

return(otfMyRes);  

私見ですが、このような「問い」がない方が、ifを通したり、インデントを付けたりして、より分かりやすいと思います。コード効率は全く同じですが。

ところで、iFillingModeとotfFilingTypeの数値にこだわっていることが一目瞭然ですが、これは私見ですが、あまり良い方法とは思えません。

 
Georgiy Merts:

ところで、今日、このホラーを見てみた。

その意味はこうだ。

私見ですが、このような「問い」がない方が、ifを通したり、インデントを付けたりして、より分かりやすいと思います。コード効率は全く同じですが。

ところで、iFillingModeとotfFilingTypeの数値にこだわっていることが一目瞭然ですが、これは私見ですが、あまり良い方法とは思えません。

私のリブではこんな感じです。

#ifdef __MQL5__
   ENUM_ORDER_TYPE_FILLING COrder::GetFilling(ENUM_FILLING_MODE mFilling){
      if (!_fillingMode) return ORDER_FILLING_RETURN;
      else if (mFilling==FILLING_AUTO||mFilling==FILLING_FOK) return !(_fillingMode&SYMBOL_FILLING_FOK)?ORDER_FILLING_IOC:ORDER_FILLING_FOK;
      else return  !(_fillingMode&SYMBOL_FILLING_IOC)?ORDER_FILLING_FOK:ORDER_FILLING_IOC;}
#endif

_fillingMode はこのフィールドの再参照に展開されるマクロである

fillingMode=(int)SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE);
 
Georgiy Merts:

それはまた別の話です。

そういえば、私も自分のコードを見ていて、なぜこの場所に書かれているのかわからないことがあります。 だから、そういう場所には、細かいところまで言及するように心がけてコメントしているんです。それでも、定期的に自分の考えていないことを確認することがあるんです。

さらに、私は、非常に評判の良いフォーラムのユーザーによって書かれた次のコード(実行の種類を決定する)を使用しています。

さらに、このフォーラム参加者自身が、もう覚えていない、このコードはすでに何度もテストされており、信頼 できると言っているのです。

まあ、このくだらない「質問」を本当のif文に置き換える機会があれば、その方法を考えてみますが...。今のところ...

黄色 - 自分で書いた些細なコードをすぐに理解できない人がいるのは非常に不思議です。

赤 - 私はあまりにも怠惰ではなかったと私は市場で実行するとき、私はORDER_FILLING_RETURNは できません、それは株式のためだけです(ドックでエラーがあります)、これは尊敬されるフォーラムの所有者が返したものです)))

 
Vladimir Simakov:

黄:自分で書いた些細なコードを理解できない人というのは、とても不思議です。

赤 - 私は怠惰な感じと再確認しなかった、市場で実行するとき、あなたはORDER_FILLING_RETURN することはできません、それは交換のためだけです(ドックでエラーがあります)、これは尊敬のフォーラムのメンバーが返すものです))))。

このようなエントリーの中で、このコードがどれだけ「些細なこと」なのか、私は知らない。そのロジックを理解するのに15分以上かかり、ifを書き出すことで初めて理解できたのです。

また、「ドキュメントに誤りがある」ということについてですが、詳しく教えてください。

 
Georgiy Merts:

このような記事で、このコードがどれだけ「些細なこと」なのかは分かりませんが。その仕組みを理解するのに15分以上かかり、ifを書き出すことで初めて腑に落ちました。

また、「in docks error」についてですが、詳しく教えてください。

為替執行時

SymbolInfoInteger(symbol,SYMBOL_FILLING_MODE)

0を返しますが、マーケットで(アルパリで確認しました)。

SYMBOL_FILLING_IOC | SYMBOL_FILLING_FOK

アルパリで確認したところ、0x3が返ってきました。このような方法で試した場合

MqlTradeRequest::filling_mode=ORDER_FILLING_RETURN

試してみると、開かない。

 
Vladimir Simakov:

をクリックすると開きません。

本来の機能を確認。

#include <MT4Orders.mqh>

#define  Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnTick()
{
  if (!OrdersTotal())
  {
    OrderSend(_Symbol, OP_BUY, 0.1, Ask, ORDER_FILLING_FOK, 0, 0);    
    OrderSend(_Symbol, OP_BUY, 0.1, Ask, ORDER_FILLING_IOC, 0, 0);    
    OrderSend(_Symbol, OP_BUY, 0.1, Ask, ORDER_FILLING_RETURN, 0, 0);    
  }  
}

効くんです。

 
fxsaber:

本来の機能を確認。

効くんです。

取引所取引ではなく、市場取引 でお試しください。)

UPD:修正、即実行で、その1。

シンボルトレード実行インスタント

 
Vladimir Simakov:

取引所取引ではなく、市場取引 にトライしてください。)

UPD:修正、即実行で、その1。

シンボルトレード実行インスタント

上記のEAをテストする。ぜひお試しください。

 
Vladimir Simakov:

取引所取引ではなく、市場取引 にトライしてください。)

UPD:修正、即実行で、その1。

シンボルトレード実行インスタント

これらは、例えばA-riのスタンダードタイプのアカウントですね。

そして、ディーリングをしているブローカーは必ずこのような執行をしていますね。

念のため。

 

なぜ悩むのか?

標準クラスを 使用し、構造体(MqlTradeRequest)を埋める必要がなく、FillingsとInstantsを知る必要がない。


#include<Trade\SymbolInfo.mqh>
#include<Trade\AccountInfo.mqh>
#include<Trade\Trade.mqh>

CTrade  
CAccountInfo 
CPositionInfo