bool fnOrderDuplicate(){
iDuplicateOrders =0;//setting orderdup to zero
iOrders =OrdersTotal()-1;//iOrders returns market orders count - 1. So if zero orders, we get -1for(int i= iOrders; i>=0; i--)// the loop to cycle through total orders{OrderSelect( i, SELECT_BY_POS, MODE_TRADES);//select order for functionif((OrderType()!=OP_BUY)&&(OrderType()!=OP_SELL))//if order is NOT op-buy and is NOT op-sell, sCurrentOrderType = other (ie no order)
sCurrentOrderType ="OTHER";if(OrderType()==OP_BUY)//if order=buy, sCurrent OrderType = buy
sCurrentOrderType ="BUY";//***7Jul09 ';' was missing at end of lineif(OrderType()==OP_SELL)//***7Jul09: the end ')' was missing.
sCurrentOrderType ="SELL";//if orderfound = sell, sCurrentOrder= sellif((OrderSymbol()==Symbol())&&( sCurrentOrderType == sSignal))//if ordersymbolfortheorder= symbolforchart && ScurrentOrder = sSignal(fn_entryrules)
iDuplicateOrders++;//iDuplicateOrders is added 1}if( iDuplicateOrders ==0)//if iduporders = 0 then fnOrderDuplicate = false, otherwise it's true.return(false);return(true);}
ありがとう、CB、私はそれに気づくべきでした、それでエラーは最後(130)に正しかったのです。
その後、動作していますか?
CB
ヘイ、CB、それは取引を実行していますが、ロジックが正しくフォローされているかどうかを確認するために取引を詳しく調べていません(一見するとそう見えますが)。だから、今こそ「ありがとう!!」と言いたいです。)
このストラテジーが利益を生むようになるまでには、まだかなりの道のりがあります。コードはあくまで取引を自動化するためのものなので、ストラテジーそのものを改良するために私の方で少し作業をする必要があります。この努力は報われたように見えるが、私はまだコーディングに超困惑している。これからチャートにコメントを表示するコードを自作して、それをいじりながら関数などを 勉強していこうと思います。このCBでお世話になり、何度も同じことを聞いて、同じ間違いをする私に忍耐強く付き合ってくれたことに超感謝しています。ありがとうございました。
それは簡単です。
未決済注文の最大数を自分で設定する。頻繁に変更する必要がある場合は、それを外部化します。
それから、fnOrderDuplicate()関数を 変更することによって実装します。そうすることで、アプリケーションの既存のアーキテクチャを維持することができます。
CB
ヘイ、CB。上の投稿であなたが尋ねたことをやろうと、もう2時間も費やしたよ。他のコードやドキュメントも見たけど、進展なし(何をしたらいいかわからない)。私は学習において何の進歩もないと感じているので、あなた方は親切にも私のためにすべてのコードを書いてくれています。
ねえ、CB、上記の点について何か助けがあるかしら、1方向に複数の取引をするコードを修正する方法は?
if (iDuplicateOrders== 0)をif (iDuplicateOrders<= iMaxDuplicateOrders ) に変更するだけです。
CB
CBさん、ありがとうございます。このオプションでは、1つの方向で許可されるオープンオーダーの数を規制することができません(extern iMaxDuplicateOrders = 4; とすると、eaは4つのショートを実行し、パラメータを 均等に分配しません(例えば:最大2ショート、最大2ロング)。bool fnOrderDuplicateの複製(例:bool fnOrderDuplicateBuys、bool fnOrderDuplicateSells)を作成し、bool fnShouldWeTradeでそれぞれを参照するようにしてみましょうか?私の考えでは、これでうまくいくと思うのですが、いかがでしょうか?
CBさん、ありがとうございます。このオプションでは、1つの方向で許可されるオープンオーダーの数を規制することができません(extern iMaxDuplicateOrders = 4; とすると、eaは4つのショートを実行し、パラメータを均等に分配しません(例えば:最大2ショート、最大2ロング)。bool fnOrderDuplicateの複製(例:bool fnOrderDuplicateBuys、bool fnOrderDuplicateSells)を作成し、bool fnShouldWeTradeでそれぞれを参照するようにしてみましょうか?私の考えでは、これでうまくいくと思うのですが、どうでしょうか?
iMaxDuplicateOrders = 4に設定すると、カウンターを増分する前に方向をチェック するので、最大で各方向に4つの注文が出ることになります。
信用は信用するものです。この例では、その逆が正しいのです。申し訳ありません - あなたが自分で修正しなかったことに、私はすでに失望していました。必要だったのは、制限を1つのオーダーから変数に変更することだけでした。
注釈を見ると、あなたがロジックをよく理解せずに、単にコードを散文的に再作成していることは明らかです。
CB