こんにちは!
OrderClose()が機能しない理由がわかりません。私を手伝ってくれますか。
extern double TakeProfit = 500;
外部ダブルロット= 0.1。
extern double TrailingStop = 100;
extern double StopLoss = 200。
ダブルサー、素直。
int cnt、チケット、合計。
// ———————————————– ——————-
// |エキスパート初期化機能 |
// ———————————————– ——————-
void OpBuySell()
{
imacurrent = iMA(NULL、0、5、0、MODE_SMMA、PRICE_MEDIAN、0)。
sar = iSAR(NULL、0、0.02、0.2、0);
if(sar <imacurrent)
{
ticket = OrderSend(Symbol() OP_BUY、Lots、Ask、3、Ask-(ストップロス*ポイント)、Ask (テイクプロフィット*ポイント)、 "sar sample"、16384,0、Green);
(0)を返します。
}
if(sar> imacurrent)
{
ticket = OrderSend(Symbol()、OP_SELL、Lots、Bid、3、Bid (ストップロス*ポイント)、Bid-(テイクプロフィット*ポイント)、 "sar sample"、16384,0、Red);
(0)を返します。
}
}
// ———————————————– ——————-
// |エキスパート非初期化関数
// ———————————————– ——————-
void CloseOpBuySell()
{
if(OrderType()== OP_BUY)//ロングポジションがオープンされている
{
if(sar> imacurr ent)
{
OrderClose(OrderTicket()、OrderLots()、入札、5、赤);
}
}
if(OrderType()== OP_SELL)//ショートポジションがオープンされている
{
if(sar <imacurrent)
{
OrderClose(OrderTicket()、OrderLots()、Ask、5、Red);
}
}
}
// ———————————————– ——————-
// |エキスパートスタート機能|
// ———————————————– ——————-
int start()
{
RefreshRates();
int total = OrdersTotal();
total = OrdersTotal();
if(合計<1)
{
OpBuySell();
(0)を返します。
}
for(int cnt = 0; cnt <total; cnt )
{
OrderSe lect(cnt、SELECT_BY_POS、MODE_TRADES);
if(OrderSymbol()== Symbol())//シンボルをチェックする
{
CloseOpBuySell();
(0)を返します。
}
}
}
// ———————————————– ——————-
こんにちは
実行するすべての機能をstart()部分に含める必要があります。
init()はエキスパートをチャートに組み込んだときにのみ使用されます。コードを実行する前に1回だけ行われるようなプリセット計算を行うことができます。
チャートからエキスパートを削除しながらdeinit()を使用
下のリンクはあなたにもっと良い理解を与えるはずです
book.mql4.com/programm/structure
$ BBhFs$K!”$”$J$?$,0lEYCmJ8$r%*!<%W%s$9$k$H!"@dBP$G$J$$$Hsarは決して更新されません。
みんなありがとう、
私はすべてのコードをstart()部分に追加しました、そしてEAは素晴らしい働きをします。
5479: https://www.mql5.com/en/forum/124782
Originally posted 2019-08-04 04:26:30.