MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1258

 
VIX XIV:
こんばんは。最後に閉じた注文を見つけるコードはどのようなものでしょうか?OrderSelect(OrdersHistoryTotal, SELECT_BY_POS, MODE_HISTORY)」のような感じでしょうか?

ブロックはおおよそこのような形になります。

int a=-1;

for(int is=OrdersHistoryTotal(); is>=0; is--)

{

if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))

{

if(OrderType()==OP_BUY){a=OrderType();break;}。

if(OrderType()==OP_SELL){a=OrderType()};break;}。

}

}

if(a==OP_BUY) Comment("リストで最後に決済された買い注文が見つかりました。")

if(a==OP_SELL) Comment("最後に閉じた売り 注文が見つかりました。")


 

OrdersHistoryTotalの注文の時系列配列に保証はなく、締め日で確認する必要があると昔読んだことがあります。

 

@Valerius さん、コードとして挿入できないのでしょうか?あるいは、何が足りないのか?

 
Сергей Таболин:

@Valerius さん、コードとして挿入できないのでしょうか?あるいは、何が足りないのか?

MTエディターでコードをコードとして挿入することを人力でできるようにしてもらえないでしょうか。

どのボタンも必要な動作をしません。

 
Valerius:

MTエディタにコードとして挿入できるように人力で作ってもらえないでしょうか。

どのボタンも思い通りに動かない。

トリッキーな方法があるんです。任意のコードから好きなものをコピー&ペーストしてください。そして、そこにあなたのコードを貼り付けてください。マイナスハイライトはこうはいきません))))


if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))  Это чужой код и его можно править))))
 
Valerius:

最初の質問では、次のような関数を作る必要があります。


for(int is=OrdersTotal()-1; is>=0; is--)
{
if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))
{当週でない週の金曜日にオープンされた注文をクローズします。この場合、当週の金曜日に注文を締め切ることはありません。
if(OrderMagicNumber()==Magic && TimeDayOfWeek(TimeCurrent())==5 && TimeDayOfWeek(OrderOpenTime())==5 && TimeDayOfYear(OrderOpenTime())<TimeDayOfYear(TimeCurrent()) )
{
if (OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_BID),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE) となる。
if (OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE) とする。
if(!result) {error=GetLastError(); Print("LastError = ",error, ",Symbol()); }.
else {error=0;}。
さもなくば
{Print("NoMagic ",OrderMagicNumber();} // for Debug
さもなくば

{Print("Error when order select ", GetLastError();})注文時にエラーが発生しました。


2問目には、次のような項目があるはずです。

OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE)です。

頑張ってください。

ありがとうございます!最初の質問で期待通りに動作しました

2つ目 - パラメータの数が正しくない。修正しました - OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE)です。

今になって、最初の変形(どこからかコピーしてきた)の編集がよくわからなくなりました.

 
こんにちは
どなたか、trailing take profiの仕組みを説明して いただけませんか?MT5のヘルプにTrailing Stopの情報はありますが、Trailing Profitの情報はありません。Expert Advisorの「Stop Loss trailing level (in points)」を例えば100に設定すると、価格が必要な方向に100ポイント通過したときに、トレーリングプロフィットが有効になると理解しています。しかし、「Take Profit trailing level (in points)」=10というのはどういう意味でしょうか?
 
altec3:
こんにちは!
どなたか、Trailing Take Profiの原理を説明して いただけませんか?MT5 ReferenceにTrailing Stopの記載がないのですが。Expert Advisorの「Stop Loss trailing level (in points)」を例えば100に設定すると、価格が必要な方向に100ポイント通過したときに、トレーリングプロフィットが有効になると理解しています。しかし、「Take Profit trailing level (in points)」=10というのはどういう意味でしょうか?

TakeProfitはpips単位で、Trailing TakeProfitは入金通貨単位で計算されます。Trailing TakeProfitは、1つまたは複数の注文から預金の通貨で利益であり、設定で指定された金額で注文の停止を置く、すなわち、計算された距離である。

例えば、Trailing Take Profitを$100で指定する場合、設定で指定します。価格が100$の利益に達し、さらに進むと、プログラムは100$の距離を計算し、計算されたスポットにすべてのストップロスの注文を配置します(可能な場合)。価格がストップ高までロールバックされると同時に、すべての注文がクローズされます。基本的にはトレーリングストップと同じですが、デポ通貨で計算され、利益をトレールするのが特徴です。どこかで間違えているかもしれませんが、これが原則です。説明できたでしょうか。

 
pythonを使って、指定した時間枠のターミナルからすべてのバーを要求するにはどうすればよいですか?
 
mt5では、終値の代わりにPOSITION_TIME_UPDATEを 見るべきという理解で正しいですか?