//global scopedouble BuyTrigger,SellTrigger;
//init function
BuyTrigger=Ask+OpenDistance*pt;
SellTrigger=Bid-OpenDistance*pt;
//start function
OTCurrentTick=OrdersTotal(); //reinit OrderTotal <<-- this is already there, place the 4 lines below after this lineif(OTCurrentTick==0&&OTLastTick>0){
BuyTrigger=Ask+OpenDistance*pt;
SellTrigger=Bid-OpenDistance*pt;
}
if(Ask>BuyTrigger && BuyAllowed) // <-- use this instead of if(OpenDistance*pt && BuyAllowed)
if(Bid<SellTrigger && SellAllowed)
Kroninさん、こんにちは。
そうなんです、まだまだ勉強不足で...。さて、ある値が関数の外からアクセスされる必要があるとき、その値はグローバルでなければならないと理解しています。
それは真実ではありませんし、しばしば悪い考えです。
関数に する理由のひとつは、コードを再利用できるようにするためです。 もし関数が特定のグローバル変数と連動するようにハードコーディングされていると、柔軟性が失われます。 ユーザー定義関数に変数を渡すことを検討すべきです。 ...常にグローバルに宣言された変数を使用するとは限りません。 たとえば、以下のようになります。
... これはグローバルに宣言された変数を使用するのではなく、呼び出されたときに渡された変数を使用します ... ...
Kroninさん、こんにちは。
はい、私は学ぶことがたくさんある...今、外部からアクセスする値の必要性があるときに、グローバルでなければならない関数であることを理解しています。
EAは5桁のブローカーで動作する必要があるため、外部にある値は10倍されます。私はそれを自動的に得るためにコードのこのブロックを使用していますが、金属と互換性がないWHRoederから助言を得ることができます。
ペアのスプレッドは変動する可能性があります。そのため、Stop Levelから抜け出すためのコードを使用しています。
この問題については、「しかし、私は、すべての注文がほとんど同時に開かないように、あなたの入力パラメータを調整 しました。多分、デフォルトのパラメータを確認する必要があります。"
私が見る限り(違っていたらすみません)、OpenDistanceは2pips、ReturnDistanceも2pipsで維持されています。今見ているのは、注文は開くのですが、2pipsの差では開きません。これはECNブローカー(IC Markets)のプラットフォームからテスターで実行しています。これは何らかの重要性を持っているのでしょうか?
実際、注文は同時に開きませんが、Open Distance と ReturnDist が、注文を開くのに適切な距離を得るために考慮されていないようです。
あなたはコードに次のように記述しています。
私は関数OpenOppositeOrderを呼び出すために太字で行を含めると、ここでは、これが正しいかどうかはわからない。一方、2pips前に起こった最後のティックと現在のティックの比較(OpenDistance)はどこにあるのかがわかりません。
私の問題であなたを退屈させ始めたら申し訳ありません。
よろしくお願いします。
ルイス
Kroninさん、こんにちは。
私は、なぜスプレッドが何であるかを尋ねると、何かが間違っていることをテスターのために見ているより多くの注意を払っています。ここでは、スプレッドは50(5桁)なので、実際には5です。うーん...私はプラットフォームを再起動し、確認します。
Luis
それは真実ではなく、また、多くの場合、悪い考えです。
コードの一部を関数にする理由のひとつは、そのコードを再利用できるようにすることです。 もし関数が特定のグローバル変数を扱うようにハードコーディングされていると、柔軟性が失われます。 ユーザー定義関数に変数を渡すことを検討すべきです。 ...常にグローバルに宣言された変数を使う必要はありません。 たとえば、次のようになります。
... これはグローバルに宣言された変数を使用するのではなく、呼び出されたときに渡された変数を使用します ... ...
RaptorUKさん、こんにちは。
私を正しい方向に導いてくれて、ありがとうございます。
ところで、あなたは私がテスターの問題に関して言及したようなことを聞いたことがありますか、つまり、金曜日には なかったスプレッドが、この瞬間には50であるということですか?
よろしくお願いします。
ルイス
こんにちは、RaptorUK。
私を正しい方向へ導いてくれたことに感謝します。
よろしくお願いします。
ルイス
はい、関数のアイデアは、それらをすべてvoidとして宣言することを意味するものではありませんでした....私はEAに再び取引をさせるために、あなたのvoid MM()のLotSizeの宣言を削除しただけです... - それについてはまた後で話すと思いました... :-)
2ピップスレベルのポイントで開かない」について
例えば、私はテストするためのティックデータを持っていない、また、スプレッドが2ピップス以上である(私はそれを調整することができますが、私はティックデータを持っていない場合、それは何の役に立つのでしょうか)。このようなことから、クローズドストップの信頼性が高いものをテストすることは困難です。
16:21:09 _help_53198_markettorderdecnqv80 入力です。EquityPercent=1; FixedLotSize=0.01; Multiplier=2; LotDigits=2; StopLoss=50; TakeProfit=20; TrailingStop=2; MinimumProfit=3; Slippage=3; OpenDistance=2; ReturnDist=1; MinStop=1; MagicNumber=8012013; MaxOrders=7.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EURUSD,M1: Open #1 buy 0.01 EURUSD at 1.43310 ok
EURUSD,M1: 最初の買い注文が出ました # 1
EURUSD,M1: 1.43310で#1買い0.01 EURUSDを変更する sl: 1.42810 tp: 1.43510 ok
EURUSD,M1: 開く #2 sell 0.01 EURUSD at 1.43257 ok
EURUSD,M1:反対方向の売り注文を 発注 # 2
EURUSD,M1: 1.43257で#2売り0.01 EURUSDを修正 sl: 1.43757 tp: 1.43057 ok
EURUSD,M1: 開く #3 buy 0.01 EURUSD at 1.43283 ok
EURUSD,M1:反対方向の買い注文を発注 # 3
EURUSD,M1: 1.43283の#3買い0.01 EURUSDを修正 sl: 1.42783 tp: 1.43483 ok
EURUSD,M1: 開く #4 sell 0.01 EURUSD at 1.43230 ok
EURUSD,M1:反対の売り注文を発注 # 4
EURUSD,M1: 1.43230で#4売り0.01 EURUSDを修正 sl: 1.43730 tp: 1.43030 ok
EURUSD,M1: 開く #5 buy 0.01 EURUSD at 1.43280 ok
EURUSD,M1:反対方向の買い注文を発注 # 5
EURUSD,M1: 1.43280の#5買い0.01 EURUSDを修正 sl: 1.42780 tp: 1.43480 ok
EURUSD,M1: 開く #6 sell 0.01 EURUSD at 1.43200 ok
EURUSD,M1:反対の売り注文を出しました #6
EURUSD,M1: 1.43200で#6売り0.01 EURUSDを修正 sl: 1.43700 tp: 1.43000 ok
EURUSD,M1: 開く #7 buy 0.01 EURUSD at 1.43250 ok
EURUSD,M1:7番に反対の買い注文を発注
EURUSD,M1: 1.43250の#7買い0.01 EURUSDを変更する sl: 1.42750 tp: 1.43450 ok
EURUSD,M1: 1.43250で#7買い0.01 EURUSDを変更する SL: 1.43267 TP: 1.43450 ok
EURUSD,M1: 1.43250で#7買い0.01 EURUSDを変更する SL: 1.43283 TP: 1.43450 ok
EURUSD,M1: 修正#3買い0.01 EURUSDで1.43283 sl:1.43300 tp:1.43483 ok
EURUSD,M1: 修正 #5 buy 0.01 EURUSD at 1.43280 sl: 1.43300 tp: 1.43480 ok
EURUSD,M1: 修正#7買い0.01 EURUSD at 1.43250 sl: 1.43300 tp: 1.43450 ok
テスター:1.43300でストップロス#3 (1.43300 / 1.43340)
テスター: ストップロス#5@1.43300 (1.43300 / 1.43340)
テスター: ストップロス #7 at 1.43300 (1.43300 / 1.43340)
EURUSD,M1:最終クローズチケット=7
EURUSD,M1:オーダー with ticketnr: 7 hit SL!すべてのオープンオーダーをクローズ
EURUSD,M1: Close #6 sell 0.01 EURUSD at 1.43200 sl: 1.43700 tp: 1.43000 at price 1.43340
EURUSD,M1: Close #4 sell 0.01 EURUSD at 1.43230 sl: 1.43730 tp: 1.43030 at price 1.43340
EURUSD,M1: Close #2 sell 0.01 EURUSD at 1.43257 sl: 1.43757 tp: 1.43057 at price 1.43340
EURUSD,M1: Close #1 buy 0.01 EURUSD at 1.43310 sl: 1.42810 tp: 1.43510 at price 1.43300
私の見解では、それはあなたが望むことを行っています。私はOpenOppositeの計算を変更したことはありませんし、最初の注文を開くこともありません。
そうですね、関数で考えたのは、本当は全部をvoidと宣言するつもりではなかったのですが...。ただ、EAが再び取引できるように、あなたのvoid MM()のLotSizeの宣言を削除しました... - そのことについては、また後で話すと思います... :-)
2pipsレベルのポイントでは開かない」について
例えば、私はテストするためのティックデータを持っていない、また、スプレッドは2ピップス以上です(私はそれを調整することができましたが、私はティックデータを持っていない場合、それは何の役に立つのでしょうか)。このようなことから、クローズドストップの信頼性が高いものをテストすることは困難です。
16:21:09 _help_53198_markettorderdecnqv80 入力です。EquityPercent=1; FixedLotSize=0.01; Multiplier=2; LotDigits=2; StopLoss=50; TakeProfit=20; TrailingStop=2; MinimumProfit=3; Slippage=3; OpenDistance=2; ReturnDist=1; MinStop=1; MagicNumber=8012013; MaxOrders=7.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
EURUSD,M1: Open #1 buy 0.01 EURUSD at 1.43310 ok
EURUSD,M1: 最初の買い注文が出ました # 1
EURUSD,M1: 1.43310で#1買い0.01 EURUSDを変更する sl: 1.42810 tp: 1.43510 ok
EURUSD,M1: 開く #2 sell 0.01 EURUSD at 1.43257 ok
EURUSD,M1:反対方向の売り注文を発注 # 2
EURUSD,M1: 1.43257で#2売り0.01 EURUSDを修正 sl: 1.43757 tp: 1.43057 ok
EURUSD,M1: 開く #3 buy 0.01 EURUSD at 1.43283 ok
EURUSD,M1:反対方向の買い注文を発注 # 3
EURUSD,M1: 1.43283の#3買い0.01 EURUSDを修正 sl: 1.42783 tp: 1.43483 ok
EURUSD,M1: 開く #4 sell 0.01 EURUSD at 1.43230 ok
EURUSD,M1:反対の売り注文を発注 # 4
EURUSD,M1: 1.43230で#4売り0.01 EURUSDを修正 sl: 1.43730 tp: 1.43030 ok
EURUSD,M1: 開く #5 buy 0.01 EURUSD at 1.43280 ok
EURUSD,M1:反対方向の買い注文を発注 # 5
EURUSD,M1: 1.43280の#5買い0.01 EURUSDを修正 sl: 1.42780 tp: 1.43480 ok
EURUSD,M1: 開く #6 sell 0.01 EURUSD at 1.43200 ok
EURUSD,M1:反対の売り注文を出しました #6
EURUSD,M1: 1.43200で#6売り0.01 EURUSDを修正 sl: 1.43700 tp: 1.43000 ok
EURUSD,M1: 開く #7 buy 0.01 EURUSD at 1.43250 ok
EURUSD,M1:7番に反対の買い注文を発注
EURUSD,M1: 1.43250の#7買い0.01 EURUSDを変更する sl: 1.42750 tp: 1.43450 ok
EURUSD,M1: 1.43250で#7買い0.01 EURUSDを変更する SL: 1.43267 TP: 1.43450 ok
EURUSD,M1: 1.43250で#7買い0.01 EURUSDを変更する SL: 1.43283 TP: 1.43450 ok
EURUSD,M1: 修正#3買い0.01 EURUSDで1.43283 sl:1.43300 tp:1.43483 ok
EURUSD,M1: 修正 #5 buy 0.01 EURUSD at 1.43280 sl: 1.43300 tp: 1.43480 ok
EURUSD,M1: 修正#7買い0.01 EURUSD at 1.43250 sl: 1.43300 tp: 1.43450 ok
テスター:1.43300でストップロス#3 (1.43300 / 1.43340)
テスター: ストップロス#5@1.43300 (1.43300 / 1.43340)
テスター: ストップロス #7 at 1.43300 (1.43300 / 1.43340)
EURUSD,M1:最終クローズチケット=7
EURUSD,M1:オーダー with ticketnr: 7 hit SL!すべてのオープンオーダーをクローズ
EURUSD,M1: Close #6 sell 0.01 EURUSD at 1.43200 sl: 1.43700 tp: 1.43000 at price 1.43340
EURUSD,M1: Close #4 sell 0.01 EURUSD at 1.43230 sl: 1.43730 tp: 1.43030 at price 1.43340
EURUSD,M1: Close #2 sell 0.01 EURUSD at 1.43257 sl: 1.43757 tp: 1.43057 at price 1.43340
EURUSD,M1: Close #1 buy 0.01 EURUSD at 1.43310 sl: 1.42810 tp: 1.43510 at price 1.43300
私の見解では、それはあなたが望むことを行っています。私はOpenOppositeの計算を変更したことはありませんし、最初の注文を開くこともありません。
こんにちは、Kroninです。
私は別のブローカーから別のプラットフォームをダウンロードして、再びそれをテストし、その結果についてお知らせするのを待ちます。
再びありがとうございます
ルイス
こんにちは、Kroninです。
テスターでスプレッドが5ピップ(50)に跳ね上がったことを確認しました。 今日テスターであなたのコードが問題なく動作することを示しましたので、ECNデモ口座 に置いて見ます。
よろしくお願いします。
Luis
Kroninさん、こんにちは。
一つ問題があります。
EAを起動するとき、価格が2ピップ乖離するのを待ってから最初の注文を開くべきではないでしょうか?
2つ目の注文が開く条件を満たしたとき、正しい場所で開きます。
よろしくお願いします。
ルイス
Kroninさん、こんにちは。
一つ問題があります。
EAを起動するとき、価格が2ピップ乖離するのを待ってから最初の注文を開くべきではないでしょ うか?
2つ目の注文が開く条件を満たしたとき、正しい場所で開きます。
よろしくお願いします。
ルイス
こんにちは、Luis
ストラテジーに従えばそうなるはずですが、コードに従えばそうなりません。
if(OpenDistance*pt && BuyAllowed) //<-- this doesn't make any sense.
上記は if(2*0.0001 && true) と読みます。0以外の数値式はtrueと解釈されます。つまり、BuyAllowedがtrueであれば、この式は常にtrueになります。
申し訳ありません、私はシリーズの最初のオープニングに注意を払ったことがなく、たった2ピップスなので、特に異常には気がつきませんでした。
これを試してみてください。
Kroninさん、こんにちは。
私の理解力の限界であなたを退屈させて申し訳ありませんが、それでも学ぶには遅すぎることはありませんし、あなたがとても親切に提供してくれたコードに入るために私の最大限の努力をしようと思っています。
今、最適な設定をテストしているので、最後に更新されたコードを紹介します。
これらの問題(冒険...私が意味する...)で私をサポートし続けるために、事前にありがとうございました。
ルイス
Kroninさん、こんにちは。
あなたの改造はうまくいっています。注文の最大数を制限していますが、代わりにすべてクローズすることは可能でしょうか?
私は以下のコードでそれをしようとしましたが、うまくいかないようです。
よろしくお願いします。
ルイス