//---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //----
//---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ string sy="NULL"; int op=-1; int mn=-1; bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) { datetime t; double ocp, osl; int dg, i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol(); for (i=0; i<k; i++) { if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (OrderSymbol()==sy || sy=="") { if (OrderType()==OP_BUY || OrderType()==OP_SELL) { if (op<0 || OrderType()==op) { if (mn<0 || OrderMagicNumber()==mn) { if (t<OrderCloseTime()) { t=OrderCloseTime(); j=i; } } } } } } } if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) { dg=MarketInfo(sy, MODE_DIGITS); if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2; ocp=NormalizeDouble(OrderClosePrice(), dg); osl=NormalizeDouble(OrderStopLoss(), dg); if (ocp==osl) return(True); } return(False); } int start() { //---- bool stopl; stopl = isCloseLastPosByStop(sy,op,mn); if (stopl == true) Alert ("последняя сделка закрылась по s/l"); //---- return(0); }
アナログを見て みよう。特にEquity_simple.mq4
ありがとうございました。インジケーター自体は別ウィンドウで動作します...
しかし、標準EAで#property...を挿入しても、ジャーナルに - 2011.03.09 18:04:58 Expert 'MACD Sample' is an indicator and cannot be executedと表示される場合はどうすればよいのでしょうか。
取引履歴を読み、次のポジションを決済した時点の残高を読み取る必要があります。
エクイティは少し複雑ですが、まったく同じことができます。
すべての計算を標準ロットに寄せるか、pipsで数えることができる
だから、何も読んだり数えたりする必要はなく、インジケーターがすべてを示してくれるのです。
では、試しにやってみるのはどうでしょう?
--------------------------------------------------------------------------------------------------------------------
3〜4時間プロセスから外れている。
ストップロスで決済した後にメッセージを表示させたいのですが、mt4では何も起こりません。
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
string sy="NULL";
int op=-1;
int mn=-1;
bool isCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
datetime t;
double ocp, osl;
int dg, i, j=-1, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderCloseTime()) {
t=OrderCloseTime();
j=i;
}
}
}
}
}
}
}
if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
dg=MarketInfo(sy, MODE_DIGITS);
if (dg==0) if (StringFind(OrderSymbol(), "JPY")<0) dg=4; else dg=2;
ocp=NormalizeDouble(OrderClosePrice(), dg);
osl=NormalizeDouble(OrderStopLoss(), dg);
if (ocp==osl) return(True);
}
return(False);
}
int start()
{
//----
bool stopl;
stopl = isCloseLastPosByStop(sy,op,mn);
if (stopl == true)
Alert ("последняя сделка закрылась по s/l");
//----
return(0);
}
そのため、何も読んだり数えたりする必要がなく、インジケーターが勝手に全てを表示してくれます。
では、試しにやってみるのはどうでしょう?
--------------------------------------------------------------------------------------------------------------------
3〜4時間プロセスから外れている。
このような指標はすでに存在する
前ページですでにアドバイスしています。
そのため、何も読んだり数えたりする必要がなく、インジケーターが勝手に全てを表示してくれます。
以下は、簡略化したコードです。
このような指標は、そのまま存在する
見たことがないんです。見えるかな?
今まで見たことがない。見せてもらえますか?
こちらをご覧くださいhttps://www.mql5.com/ru/forum/103774
EAをある時刻に売買させる(使わないスリープ)にはどうしたらいいですか?