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

 

こんにちは。

あなたの技を学び、私の技をお見せするのを楽しみにしています。

 
CodeMuncher:
こんにちは、私はあなたのトリックを学び、あなたに私のトリックを示すことを楽しみにしています。

このフォーラムでは、素晴らしいものがたくさん見つかります。

読んで、検索機能を無制限に使ってください!!!

何でも気軽に質問してください ...多くの素晴らしい貢献者/ヘルパーがここにいます。

FerruFx

 
fireslayer26:
このコードでは、トレーリングストップが45pipsに設定されています。しかし、トレーリングストップは45ピップス動くまで有効にならないようです。トレードが行われたときにトレーリングストップが有効になるようにするには、どのように変更する必要がありますか?

extern string Remark1 = "== Main Settings ==";

extern int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = true;

extern double Lots = 4;

extern int Slippage = 2;

extern bool UseStopLoss = false;

extern int StopLoss = 100;

extern bool UseTakeProfit = false;

extern int TakeProfit = 15;

extern bool UseTrailingStop = true;

extern int TrailingStop = 45;

extern bool MoveStopOnce = False;

extern int MoveStopWhenPrice = 50;

extern int MoveStopTo = 1;

extern int MaxConcurrentTrades = 2;

//Version 2.01

int BarCount;

int Current;

bool TickCheck = False;

//+------------------------------------------------------------------+

//| expert initialization function |

//+------------------------------------------------------------------+

int init() {

BarCount = Bars;

if (EachTickMode) Current = 0; else Current = 1;

return(0);

}

//+------------------------------------------------------------------+

//| expert deinitialization function |

//+------------------------------------------------------------------+

int deinit() {

return(0);

}

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

int start()

{

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

Order = SIGNAL_NONE;

//+------------------------------------------------------------------+

//| Variable Begin |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Variable End |

//+------------------------------------------------------------------+

//Check position

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderType() <= OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {

IsTrade = True;

if(OrderType() == OP_BUY) {

//Close

//+------------------------------------------------------------------+

//| Signal Begin(Exit Buy) |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Signal End(Exit Buy) |

//+------------------------------------------------------------------+

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

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);

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

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(Bid - OrderStopLoss() > Point * TrailingStop) {

if(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

} else {

//Close

//+------------------------------------------------------------------+

//| Signal Begin(Exit Sell) |

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//| Signal End(Exit Sell) |

//+------------------------------------------------------------------+

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

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);

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

if (!EachTickMode) BarCount = Bars;

IsTrade = False;

continue;

}

//MoveOnce

if(MoveStopOnce && MoveStopWhenPrice > 0) {

if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {

if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {

OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

//Trailing stop

if(UseTrailingStop && TrailingStop > 0) {

if(((OrderStopLoss - Ask) > (Point * TrailingStop)) || OrderStopLoss() == 0) {

if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);

if (!EachTickMode) BarCount = Bars;

continue;

}

}

}

}

}

}

赤色で 変更

 

赤で示した変更を行ったのですが、今、EAが動作したくないようです。EAを全部投稿しますので、見てみてください。 ありがとうございます。

ファイル:
williams_ea.mq4  12 kb
 

orderstoplossの後に()があることを確認してください。

 

かっこいい!やったね

このインジケーターはどうだろう...。

このインジケータを改造して、価格の開き方によって色を変えて表示させることはできないでしょうか?例えば、前のバーより高く始まったら緑色、低く始まったら赤色、同じなら黄色、みたいな?これらの色は選択可能ですか?また、6本だけでなく、10本のオープニングを表示するように拡張することは可能でしょうか?

また、先日修正したEAで、「Pips to Activate Trailing Stop」のような入力設定はどのようにすればいいのでしょうか?別のEAでやっているのですが、どのようにコーディングすればいいのかわかりません。

ファイル:
period_open.mq4  23 kb
 

オーダーコメント()

オーダーチケット()

注文ロット()

オーダーストップロス()

オーダーテイクプロフィット()

オーダーオープンタイム()

これらはすべて、潜在的な注文フィルタリングツールです。

これらの特定の取引について、他にどのような特徴があるのでしょうか?

 
Ronald Raygun:
OrderComment()

オーダーチケット()

オーダーロット()

オーダーストップロス(OrderStopLoss)

オーダーテイクプロフィット()

オーダーオープンタイム()

これらはすべて、潜在的な注文のフィルタリング・ツールです。

そのほか、具体的にどのようなトレードが特徴的なのでしょうか?

注文のフィルタリングに最も重要なのは、OrderSymbol() と OrderMagicNumber() の 2 つです。もうひとつは、OrderComment()です。

メタエディタにこれらのいずれかを入力し、asndという単語をクリックしてからF1を押すのが最も良い方法です。そうすると、ヘルプが表示され、すべてのオーダー関数が リストアップされます。

それでは、よいプログラミングを。

Hiachiever

 

OrderComment の使用

OrderComment()を使って取引を特定するときは、注意が必要です。ブローカーがコメントに文字を追加してくることがあります。

そのため、以下のように使用するのがベストです。

if (StringFind(OrderComment(), UserComment, 0) > 0) を使用します。

{

// UserCommentで特定された注文がOrderCommentで見つかりました。

}

の代わりに

if (OrderComment() == UserComment)

{

// 注文はUserCommentで特定されるかもしれない

// もしOrderCommentがブローカーによって変更されなかったら

}

ロバート

 

ビークイーンでのクローズトレード

..............