[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 224

 

私のEAコードのマネーマネージメントを変更したいので、手伝ってください。

私のEAには2つの条件があります。

1 - 最小ロット+固定ロットでの作業、または 2 - 利用可能な資金の割合でロットを増やす。

1回目の取引失敗で0.01ロット、2回目の取引失敗で0.02ロット増加させたい。

で、3回目の負けで再びロットが最小になる。

自分のEAに貼り付けられる関数が欲しい(できればできるだけシンプルなものがいい)。

include (lot_lib)を通してコードを入れようとすると、多くのエラーが発生し、うまくいきません。

お忙しい中、ありがとうございました。


 

こんにちは。

コードを書いているところです。ポイントは、ストップロス・レベルを過去3本のバーの最安値/最高値に置くことです。出てきたのはこんな感じです。

double FindSL(int mode)
   {
    double sl; //уровень стоплосса
    double buf; //буфер
    double lvl1, lvl2, lvl3; //выборка из 3-х последних баров
    if (mode == 1) //покупали
      {
       lvl1 = iLow(symb, 0, 0);
       lvl2 = iLow(symb, 0, 1);
       lvl2 = iLow(symb, 0, 2);
       buf = MathMin(lvl1, lvl2); //ищем низ
       sl = MathMin(buf, lvl3);
      }
    else if (mode == 2) //продавали
      {
       lvl1 = iHigh(symb, 0, 0);
       lvl2 = iHigh(symb, 0, 1);
       lvl3 = iHigh(symb, 0, 2);
       buf = MathMax(lvl1, lvl2); //ищем вершину
       sl = MathMax(buf, lvl3);
      }
    return (sl);
   }

注文は以下のコードで開きます。

int OpenOrder(int sell_or_buy)                                  //Открытие ордеров
   {
    GetLot();

     if(sell_or_buy==2)                                          //покупка
       {
        StopLoss = FindSL(1);
        OrderSend(symb, OP_BUYSTOP, Lots, iHigh(symb, 0, 1), 0, StopLoss, 
        iHigh(symb, 0, 1)+TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Green);    
        return (1);
       }
     else if (sell_or_buy==1)                                    //продажа
       {
        StopLoss = FindSL(2);
        OrderSend(symb, OP_SELLSTOP, Lots, iLow(symb, 0, 1), 0, StopLoss, 
        iLow(symb, 0, 1)-TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Red);
        return (1);
       }
     else {return (0);}
   } 

StopLossはグローバル変数 です。

テストをしていると、一回のトレードで一気にお金がなくなる瞬間がやってきます。ロットは小さいので、唯一の問題は、何らかの理由でストップロスが設定されていないことです(0に等しい)。

何がエラーなのかがわからない。

コードを見てください、どこに間違いがあるのでしょうか?

 
gogent:

こんにちは。

コードを書いているところです。ポイントは、ストップロス・レベルを過去3本のバーの最安値/最高値に置くことです。出てきたのはこんな感じです。

注文は以下のコードで開きます。

StopLossはグローバル変数です。

テストをしていると、一回のトレードで一気にお金がなくなる瞬間がやってきます。ロットは小さいので、唯一の問題は、何らかの理由でストップロスが設定されていないことです(0に等しい)。

何がエラーなのかがわからない。

コードを見てください、どこに間違いがあるのでしょうか?

購入後、ストップロスは 常に0になります。

理由:変数lvl3が定義されていない(メカニカルエラー)。

 

こんにちは。

スプレッドに対応しているスプレッドがいつも不利なんです。ストップロスに加算して、テイクプロフィットから 減算すればいいんですね?つまり、50pipsの純利益を得たい場合(例えば、通貨ペアで3pipsのスプレッド)、53pipsのテイクプロフィットを注文に設定しなければならないことになるのです。もし私が50pipsの純損益を出した場合、47pipsのストップロスを与えるべきです。うまくいったかな?

ありがとうございました。

 
01123456789:

こんにちは。

拡散に対応しています。スプレッドがいつも不利なんです。では、ストップロスに加え、テイクプロフィットから差し引けばいいのでしょうか?つまり、50pipsの純利益を得たい場合(例えば、通貨ペアで3pipsのスプレッド)、53pipsのテイクプロフィットを注文に設定しなければならないことになるのです。もし私が50pipsの純損益を出した場合、47pipsのストップロスを与えるべきです。うまくいったかな?

ありがとうございました。


こんにちは。

ご予定やご期待ということであれば、その通りです。

形式的に言うなら、「順番に指定する」という意味がよくわからないのですが・・・。「めいれいいっか

 

こんにちは!カスタム関数で私を助けてください。

条件がtrueならisitpik-(true)を返すというのは理解できました。条件は、AOからの計算がある0番目のバッファから計算されます。それとも、最後のi-barだけがバッファにあり、これらの条件の発生時に(true)がisitpik()に渡されるのでしょうか?また、上記の条件によって行われるのであれば、なぜ変数(i)にint型を 代入するのでしょうか?


bool isitpik( int i )
   {
   if(ExtBuffer0[i]>0 && ExtBuffer0[i]>ExtBuffer0[i+1] && ExtBuffer0[i]>ExtBuffer0[i-1])return(true);
   if(ExtBuffer0[i]<0 && ExtBuffer0[i]<ExtBuffer0[i+1] && ExtBuffer0[i]<ExtBuffer0[i-1])return(true);
   }
 
tara:


こんにちは。

自分の予定や期待についてなら、それでいいんです。

形式的に言えば、「注文で...テイクプロフィット=53ポイントを指定する」の意味がよくわかりません。

と言ったとき。"ストップロス "と "テイクプロフィット "の2つの欄がある保留中の注文(例えば"Buy Stop")のことです。つまり、50pipsの利益を得たい場合、3ポイントではスプレッドが取られてしまうので、保留中の注文では50ではなく53ポイントの利確を指定する必要があります。そうだろ?
 
01123456789:
と言うことで"ストップロス "と "テイクプロフィット "の2つの欄がある保留中の注文(例えば "Buy Stop")のことです。つまり、50pipsの利益を得たい場合、3ポイントではスプレッドが取られてしまうので、保留中の注文では50ではなく53ポイントの利確を指定する必要があります。そうだろ?

注文では、TPとSLはポイントではなく、価格で指定する必要があります。
 
01123456789:
と言うことで"ストップロス "と "テイクプロフィット "の2つの欄がある保留中の注文(例えば "Buy Stop")のことです。つまり、50pipsの利益を得たい場合、3ポイントではスプレッドに影響するため、保留中の注文では50ではなく53ポイントの利食いを指定する必要があります。そうだろ?
どこの証券会社でも契約書に書いてあることです。買い注文はAskラインに沿って、売り注文はBidラインに沿って閉じられます。すべて正しく理解している。 スプレッドに応じて、それを利益に加えることになる。50pipsを取りたい場合は、+3(通貨ペアのスプレッドに依存)。 すべてのチャートはBidによって描かれていることを忘れないでください。
 
deyron:
どこの証券会社でも契約書に書いてあることです。買い注文はAskラインで、売り注文はBidラインで決済されます。
そうなんですか?勘違いしているようですね。買い注文は、Ask価格で始まり、Bid価格で終了します。売り注文はBidラインで開始され、Askラインで終了します。つまり、買えば(Ask価格)、売れば(Bid価格)取引を終了する。