[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 129

 

はじめまして、フクロウをダウンロードしました、テスターでは全て正常で売ったり買ったりしています、アルパリのデモに載せましたが、買いのみです......。

もしかしたら、そこに何かが欠けているのでは?どうなんだろう...。

/* デコンパイル済み */

 

マスク+インデントi_thresholdFromMaの 価格に近づいたときにExpert Advisorで買いたい。ロングポジションでこのように書きました。

bool OpenBuy(double fastMa)
{
   int ticket = -1;
   
   //if (Bid > fastMa)
   if (High[0] == fastMa || Low[0] == fastMa)
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
   
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

fastMa の値は、関数パラメータを介して渡されます。そして、現在のHighとLowの値とfastMaの 高速ストロークの値を比較します。

highまたはlowの値がfastMa ファストバルブの値と等しい場合、論理的には価格(fastMa ファストバルブの値+それからのオフセットi_thresholdFromMa)で注文が開かれるはずです。

機能が動作しない。その理由は何でしょうか。Expert Advisor は、ジャーナルにエラーを送信しません。

 
hoz:

マスク+インデントi_thresholdFromMaの 価格に近づいたときにExpert Advisorで買いたい。ロングポジションでこのように書きました。

fastMa の値は、関数パラメータを介して渡されます。そして、現在のHighとLowの値とfastMaの 高速ストロークの値を比較します。

highまたはlowの値がfastMa ファストバルブの値と等しい場合、論理的には価格(fastMa ファストバルブの値+それからのオフセットi_thresholdFromMa)で注文が開かれるはずです。

機能が動作しない。その理由は何でしょうか。Expert Advisor は、ジャーナルにエラーを送信しません。

こんばんは。

分数間のイコールは絶対に直らない!ティックが滑ってしまい、信号が出なくなる。だから、こっちの方がいいんです。

   if (High[0] >= fastMa && Low[0] <= fastMa)
 

ボリスに同意するが、価格比較は以下のように行うのが良いことを付け加えておく。

Bid>fastMAではなく、Bid-fastMA>Zeroです。

High[0]>=fastMA ではなく、High[0]-fastMA>-Zero といった具合です:)

グローバルセクションで

#define Zero 0.00000001 , またはそれに類するもの。

 
tara:

ボリスに同意するが、価格比較は以下のように行うのが良いことを付け加えておく。

Bid>fastMAではなく、Bid-fastMA>Zeroです。

High[0]>=fastMA ではなく、High[0]-fastMA>-Zero といった具合です:)

グローバルセクションで

#define Zero 0.00000001 , またはそれに類するもの。

そして、アレクセイと同意見ですが、詳しくは書かず、明らかな不正確さを修正しただけですあとは、自分の好みに合わせて、確認しながら見つけていくことになります。
 

Alexey さん、Boris さん、貴重なコメントありがとうございます。

#define Zero 0.00000001 , 非常に小さくなると思います :)ここに半ポイント、スプレッドポイントを入れるのが無難でしょうか...。

 
hoz:

Alexey さん、Boris さん、貴重なコメントありがとうございます。

#define Zero 0.00000001 , 非常に小さくなると思います :)ここに半ポイント、スプレッドポイントを入れるのが無難でしょうか...。

Zeroの代わりに変数を入れてみて、それで必要なスペーシングを判断するのですそして、ほとんどの場合、市場の状態によって価値が変わるので、残しておかなければならないでしょう。
 
borilunad:
Zeroの代わりに変数を入れてみて、それで必要なクリアランスを定義するんだ!そして、ほとんどの場合、市場の状態によって価値が変わってくるので、残しておいたほうがいいでしょう。


そうですね、変数があればそれを検証し、市場の反応を観察する必要があります。とりあえずテスターで動かしてみて、自分のTSの長所と短所を確認するために書いています。

これが私の論理です。

bool OpenBuy(double fastMa, double slowMa)
{
   int ticket = -1;
   
   //if (Bid > fastMa)
   //if (High[0] == fastMa || Low[0] == fastMa)
   if ( (MathAbs(High[0] - fastMa) <= 1 * pt ) || ( MathAbs(Low[0] - fastMa) <= 0.1 * pt) )
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
   
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

テスト用にとりあえず可変クリアランスの 代わりに1を 入れましたが、その後は外付けに移します。

私の理解では、それが最も正しいバリエーションになると思います。価格がバーに触れるか触れないかで、シグナルが出るかどうかが重要になります。ローソク足には2つの端(高値と安値)があります。つまり、その2つの極値でチェックするということです。そのため、ギャップは 1より 短くなるように書きました。

しかし、i_thresholdFromMa(インデント)の距離、つまり手首からではなく、ろうそくの極限から開くのでしょうかね。

オープニングの機能で入る条件は気にしないでくださいということで、もちろんシグナル機能には 入れます。

例えばこんな画面です。

その瞬間のスクリーンショット

赤いボールがfastMA です。i_thresholdFromMa(ウェービングからのインデント)は外部変数で5それ以外の条件はすべて買いです。ここでは、赤いfastMaの 下に2つの青い逆指値注文が表示されています。ここに論理はない。注文は価格ND(fastMa + i_thresholdFromMa * pt)で正確に送信 され、私は与えられた関数でそれを見ることができます...。

 
hoz:


そうですね、もし可変であれば、それがどのような結果を示すか、市場でテストされ観察されるべきです。とりあえず、テスターで動かしてみて、TSの長所と短所を確認するために書いています。

これが私の論理です。

テスト用にとりあえず可変クリアランスの 代わりに1を 入れましたが、その後は外付けに移します。

私の理解では、それが最も正しいバリエーションになると思います。価格がバーに触れるか触れないかで、シグナルが出るかどうかが重要になります。ローソク足には2つの端(高値と安値)があります。つまり、その2つの極値でチェックするということです。そのため、ギャップは 1より 短くなるように書きました。

しかし、i_thresholdFromMa(インデント)の距離、つまり手首からではなく、ろうそくの極限から開くのでしょうかね。

オープニングの機能で入る条件は気にしないでくださいということで、もちろんシグナル機能には 入れます。

例えばこんな画面です。

赤いチェックマークはfastMA です。i_thresholdFromMa(ウェービングからのインデント)は外部変数で5どう考えても残りは買いです。ここでは、赤いfastMaの 下に2つの青い逆指値注文が表示されています。ここに論理はない。注文は価格ND(fastMa + i_thresholdFromMa * pt)で正確に送信 され、私は与えられた関数でそれを見ることができます...。

もし、バーの途中で早めにポジションを開きたい場合は、BaiにLow bar、SallにHigh barを指定する必要があります。

   if ( MathAbs(fastMa - Low[0]) <= 1 * pt )//для бая

   if ( MathAbs(High[0] - fastMa) <= 1 * pt )// для сэлла
   
 
borilunad:

もし、ポジションをバーの途中で早めに開きたい場合は、BaiにLow barを、SallにHigh barを指定する必要があります。

if ( MathAbs(fastMa - Low[0]) <= 1 * pt )//для бая

   if ( MathAbs(High[0] - fastMa) <= 1 * pt )// для сэлла


まあ、早くやる必要はないんですけどね。ろうそくはどちらからマスクに近づくのかわかりません。上か下か。それが問題なのです。だから、不適切なんです。そうでしょう?

とにかく、私の関数OrderSend()建値が違っていて、とにかくマスクより高いのです。

ここでは、関数内の値を表示しています。

//+-------------------------------------------------------------------------------------+
//| Открытие длинной позиции                                                            |
//+-------------------------------------------------------------------------------------+
bool OpenBuy(double fastMa, double slowMa)
{
   int ticket = -1;
   
   if ( (MathAbs(High[0] - fastMa) <= 1 * pt ) || ( MathAbs(Low[0] - fastMa) <= 0.1 * pt) )
   {
       if ((fastMa + i_thresholdFromMa * pt) > Ask)            // Проверка что цена открытия выше Ask, т.к. у нас вход отложенником
      Print("fastMa = ", DoubleToStr(fastMa,Digits));
      Print("i_thresholdFromMa = ", DoubleToStr(i_thresholdFromMa * pt,Digits));
       ticket = OrderSend(Symbol(), OP_BUYSTOP, 0.1, ND(fastMa + i_thresholdFromMa * pt), 3, 0, 0, NULL, i_magic, 0);
      Print("OrderOpenPrice() = ", DoubleToStr(OrderOpenPrice(),Digits));
   }
      if (ticket > 0 && OrderSelect(ticket, SELECT_BY_TICKET == true))
 
   return (true);
}

ログにはこのように表示されています。

2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #110 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #110 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: open #110 buy stop 0.10 EURUSD at 1.29820 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #109 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #109 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: open #109 buy stop 0.10 EURUSD at 1.29820 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #108 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #108 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: open #108 buy stop 0.10 EURUSD at 1.29820 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: i_thresholdFromMa = 0.00050
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: fastMa = 1.29770
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: delete #107 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: modify #107 buy stop 0.10 EURUSD at 1.29820 sl: 1.29520 tp: 1.30520 ok
2013.02.01 15:37:18     2011.01.12 14:02  D_Aleks_first_pattern EURUSD,H1: OrderOpenPrice() = 1.29820
2013.02.01 15:37:14     D_Aleks_first_pattern EURUSD,H1: loaded successfully

当然ながら、初値は私が決めるべきものです。計算されているんですね。機械値にはギャップが付加されます。そして、それをプリントで見ることができる...。