voidTrPos(){if(OrderType()==OP_BUY){if((Bid-OrderOpenPrice())>TrailingStop*Point){if(OrderStopLoss()<Bid-TrailingStop*Point){ModifyStopLoss(Bid-TrailingStop*Point);
return;
}}}// в качестве примера !!! просто выдраный кусок кода!
ag-forex писал (а): イゴール、こんにちは!私は、あなたのエキスパートアドバイザーとスクリプトを使用して、実際の(Alpari DC)上のトロールの任意のフォームを使用して問題があります。特に、e-News-Lucky$(私のシステムには理想的)、e-TFL_v2、Set2StopOrders、e-SotTrailingに関心があります。デモで動く(Alpariも)。エラーメッセージはありません。それは何でしょう?
kombat писал (а): つまり、function()の括弧の中は、パラメータを渡すための「フォーム」のようなものなのですね。
そうですね...コンテナのようなものです :-)
kombat wrote (a): なぜか頭の中で「これは関数が処理した結果として返す パラメータだ」と逆になっているからです。
関数が返すものは、戻り値です。ここでは、簡単な例をご紹介します。2つの数値を足す関数を定義する。
intf(inta, intb){intx;
x=a+b;
return(x);
}
さて、この関数をこのように呼び出すと。
inty;
y=f(3, 5);
とすると、3 と 5 は関数 f のパラメータである。関数のパラメータには、数値、変数、式があります。変数a,bはパラメータの値を受け取り、関数に与えるローカル変数 である。つまり、関数fを呼び出した後、変数yは変数xから渡された値、つまり8を受け取ります。
コンバット
また、関数が中括弧の中で処理されるパラメータを受け取ること...{}もそうです。
voidTrPos(){if(OrderType()==OP_BUY){if((Bid-OrderOpenPrice())>TrailingStop*Point){if(OrderStopLoss()<Bid-TrailingStop*Point){ModifyStopLoss(Bid-TrailingStop*Point);
return;
}}}// в качестве примера !!! просто выдраный кусок кода!
いろいろと疑問はありますが...。
いつも出てくるけど、ケースバイケース。
今公開されている機能については、本体で「感じる」ことなく見るだけなので、何の疑問もありません。
ldStopLossの役割は不明です・・・。また、それら以外にも、以前のコード、特にtrailingに関する質問もあり、これには
というようなことが書かれているのですが、この末尾の部分に戸惑いを感じました。
うーーん:-)は、そんな古くからある機能です。オープンポジションやセットオーダーのストップレベルを変更するために設計されたものです。また、テイクプロフィットについても同様の機能があった。この2つは、より機能的で優れたModifyOrder() に置き換わりました。
ldStopLossの役割は不明です・・・。
これはローカル変数で、StopLossが設定されるべき価格水準がModifyStopLoss関数に渡される手段です。例えば、ModifyStopLoss関数をこのように呼び出してみましょう。
すると、ローカル変数ldStopLossは値1.5662を取ります。このように確認することができます。
ログにはこの記録が残ります。
うーーん:-)は、そんな古くからある機能です。オープンポジションやセットオーダーのストップレベルを変更するために設計されたものです。また、テイクプロフィットについても同様の機能があった。この2つは、より完璧で機能的なModifyOrder() に置き換わりました。
それで...こき(ちょっと恥ずかしい:))フォルダをちらっと見たところ、一番古いファイルは2006.01.22の日付になっています。しかも、私のクランクに手を加えたわけでもなさそうだし...。 すみません、数字を変えるなど簡単な練習をずっと続けてきました。簡易計算機など...
きっかけは、あるPRDCのフォーラムでExpert Advisorを書きたいという要望があったことですが......。
私の銭では足りないが、市場で買わなければならない。
今、ハマっているのは...。便利なんだよなぁ...。全てはそこにある...コンパクトで持ち運びに便利なunitorなど。
Delphi 6に最初で最後に挑戦した時のことを思い出すと...。私は震え上がる。
今でもその円盤が何枚か棚にあるんだけど...。:)))オフトップで申し訳 ないです。
では、function()の括弧の中はどうなって いるかというと、何かパラメータを渡すための「形式」なのでしょうか?
なぜなら、関数が処理した結果として返す パラメータだと、なぜか頭の中で思い込んでいるからです。また、関数が中括弧の中に処理するためのパラメータを取得することです...{}。
つまり、これらのBidやPointなどは すべて入力パラメータである。
私は荒唐無稽な勘違いをしていたようだ...。そして、中括弧()の中にあるものは、関数にパラメータを渡すことができます。
一方、関数自体はスクリプトの適切なコードの任意の(あるいは他の)場所に配置することができます...。
そうだろ?
イゴール、こんにちは!私は、あなたのエキスパートアドバイザーとスクリプトを使用して、実際の(Alpari DC)上のトロールの任意のフォームを使用して問題があります。特に、e-News-Lucky$(私のシステムには理想的)、e-TFL_v2、Set2StopOrders、e-SotTrailingに関心があります。デモで動く(Alpariも)。エラーメッセージはありません。それは何でしょう?
つまり、function()の括弧の中は、パラメータを渡すための「フォーム」のようなものなのですね。
そうですね...コンテナのようなものです :-)
なぜか頭の中で「これは関数が処理した結果として返す パラメータだ」と逆になっているからです。
関数が返すものは、戻り値です。ここでは、簡単な例をご紹介します。2つの数値を足す関数を定義する。
さて、この関数をこのように呼び出すと。
とすると、3 と 5 は関数 f のパラメータである。関数のパラメータには、数値、変数、式があります。変数a,bはパラメータの値を受け取り、関数に与えるローカル変数 である。つまり、関数fを呼び出した後、変数yは変数xから渡された値、つまり8を受け取ります。
また、関数が中括弧の中で処理されるパラメータを受け取ること...{}もそうです。
つまり、これらすべてのBid、Pointなどが入力パラメータとなる。
だめModifyStopLoss 関数のパラメータは、Bid-TrailingStop*Point 式の値になります。
私は野暮な勘違いをしたようだ...。で、括弧()の中にあるのは、関数内で処理するパラメータを渡すことができます。
関数自体は、スクリプトのコード自体の任意の(あるいは他の)場所に置くことができます...。
そうだろ?
は
問題は、なぜOpenPositionと違って、ModifyOrderにはエラー処理がないのか、ということです。
交通ルールは血で書かれたものだと、どこかで聞いたことがある。そして、その中に余計なものは一切ない。その言葉の裏には、事故で失われた命がほとんどある。
私は自分の経験に合わせて、実務で発生したエラーの処理も含めて関数を書いているので、それを避けることはできません。市場に参入 しようとするときは、できるだけ「丁寧」(エラー処理)にすることを心がけています。修正時には、価格の正規化や数値の単純なチェックにより、ほとんどの誤差を排除している。修正中に何らかのエラーが発生した場合、次のティックでOKになります。閉店時も同様です。
この機能にpp-注文開始価格を送信する目的は何ですか?
最初から色が決まっているような・・・。test_ModifyOrder.mq4(12.14 KB) ...これを使わず、関数に再送信するのはどうでしょう。
なにがいいのか短縮形以前
なぜOrderOpenPrice() を正規化する必要があるのでしょうか? オーダーと同じフォーマットではないですか?
今のところ、修正時に同じものが挿入されてもエラーにはなっていません。 OrderStopLoss()、OrderTakeProfit()も同様です。この機能にpp-注文開始価格を送信する目的は何ですか?
OP_BUYLIMIT、OP_BUYSTOP、OP_SELLLIMIT、OP_SELSTOPの各オーダーが移動します。
色も、最初の段階ですでに決まっているようなものですし...。test_ModifyOrder.mq4(12.14 KB) ...なぜそれを使用せず、関数に再送信するのですか?
ありがとうございました。使わせていただきます!
なにがいいのか
たんしゅくぜん
現在のシンボルだけでなく、他のシンボルのポジションや注文を扱うことができる汎用性があります。例えば、EAがEURUSDチャートで動作する場合。Digitsを持つバリアントは、USDJPYで開いたポジションで作業することができません。
なぜOrderOpenPrice() を正規化する必要があるのでしょうか?
double 型の値をうまく比較するためです。正規化されていなければ、比較は不可能というか、意味がない。
修正時に同じものを入れ直してもエラーになりませんでした。OrderStopLoss()、OrderTakeProfit()も同様です。