コーディングの方法は? - ページ 210

 

たくさんのありがとう!!! cockeyedcowboyさん、本当に最高でした!!!

エラーメッセージは消えました。

しかし、2番目のインジケータが描画されないのですが、なぜでしょうか?

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

 

2番目のバッファは、計算するためのデータを持っていないため、問題があります。

Buffer_Mom にあるすべての要素を計算し、次に Buffer_Ma を計算してみてください。

void start()

{

int counted_bars=IndicatorCounted();

int limit=Bars-counted_bars;

if(counted_bars>0) limit++;

for(int i=0; i<limit; i++)

{

Buffer_Mom=iMomentum(NULL,Timeframe_Momentum,Periode_Momentum,PRICE_CLOSE,i);

}

for( i=0; i<limit; i++)

{

Buffer_Ma=iMAOnArray(Buffer_Mom,0,Periode_MA_Momentum,0,MODE_SMA,i);

}

return(0);

}

がんばってください。

 

特定のバーのOHLCを見つける

MQLコードを使用して、特定のバーの終値を見つける方法を教えてください。 時間によってバーを参照することはできますか?

例えば、closing_price_of_bar = Close("04:59:00 AM") ...それが簡単であればいいのですが!

ありがとうございます。

 

皆さん、こんにちは。

さて、私はもう一つ大きな問題を抱えています。

この条件をどのようにコード化するか。

初回のみロングまたはショートを入力する

(つまり、多くのロングシグナルがある場合、EAは最初の1回だけ入力する)

私はこのことについて私を助けることができる皆を支払います。

これは私の簡単な買い条件のコードです。

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Sadly:
MQLコードを使用して、特定のバーの終値を調べる方法を教えてください。時間によってバーを参照することはできますか?

つまり、Closing_price_of_bar = Close("04:59:00 AM") ...これが簡単ならいいんですけどね。

ありがとうございます。

これを試してみてください。

closing_price_of_bar =iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"))) です。

 

買うか売るか

皆さん、こんにちは。

私は買いEAと売りEAを持っていますが、常に複数のポジションを開いています。1つの口座で1つの買いポジションと1つの売りポジションのみを許可するようにコードを変更または修正する方法について、いくつかのヘルプを得たいと思います。

SLとTPはプライスターゲットを使用します。つまり、買い価格がプライスターゲットに達した場合、ポジションを閉じます。売りの価格も同様です。

このフォーラムでコードの専門家から助けを得ることを感謝します。

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

=s21=

ファイル:
opensell.mq4  2 kb
 

購入・販売

おっと...。

ここからは買いEAです。

ファイル:
openbuy.mq4  2 kb
 

注文を1つだけ出す必要がある場合は、次の条件を追加すればよいでしょう。もし(OrdersTotal()==0)であれば。

つまり、買い注文のルールはこのようなものになります。

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

[/CODE]

So you will not get second-third-... orders opened until you current order open.

dr.house7:
hy folks !

ok i have another big problem...

how to code this condition :

enter long or short only first time

(so if i have many following long signal ea enter only at first time)

i'll pay everyone could help me on this

this is my simple code for buy condition:

[CODE]

//Buy

if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {

if(!IsTrade) {

//Check free margin

if (AccountFreeMargin() < (1000 * Lots)) {

Print("We have no money. Free Margin = ", AccountFreeMargin());

return(0);

}

if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

}

}
 
Roger09:
これを試してみてください:closing_price_of_bar = iClose(Symbol(),PERIOD_M1,iBarShift(Symbol(),PERIOD_M1,StrToTime("04:59"));

Fab! インタープリタがエラーを訴えないようにするために、閉じ括弧を1つ追加しなければなりませんでしたが、とてもうまくいきました。

Roger09さん、ありがとうございました。

 
Avalanche2k:
もし、1つだけ注文を出す必要があるのなら、次の条件を追加すればよいでしょう。If (OrdersTotal()==0).

BUY注文のルールはそのようなものになるのですね。

if (Order == SIGNAL_BUY && (OrdersTotal==0) && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))

そうすれば、現在の注文が開くまで、2番目、3番目...の注文が開かれることはないでしょう。

ありがとうアバランチ。

しかし、それは私のためのソリューションではありません、私はTPを持っているので、私は反対の条件まで待つことはありません。

他のアイデア?私はあなたを支払うことになるPM私