//--- input parametersinputint g_maPeriod = 14;
inputint g_maShift = 1;
inputENUM_APPLIED_PRICE g_maPrice = PRICE_CLOSE; //Applied priceinputENUM_MA_METHOD g_maMethod = MODE_SMA; //Method MainputENUM_TIMEFRAMES g_timeFrame = PERIOD_CURRENT; //Timeframe for calculatedatetime g_barTime=0;
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
//---if(g_barTime != iTime(NULL,g_timeFrame,0))
{
if(isCrossing()==1)
{
Print("enter to '1. if (isCrossing)'"); g_barTime = iTime(NULL,g_timeFrame,0);
}
if(isCrossing()==2)
{
Print("enter to '2. if (isCrossing)'"); g_barTime = iTime(NULL,g_timeFrame,0);
}
}
}
//+------------------------------------------------------------------+int isCrossing()
{
int res=0;
double low = iLow(Symbol(), g_timeFrame, 1);
double high = iHigh(Symbol(), g_timeFrame, 1);
double ma = iMA(_Symbol, g_timeFrame, g_maPeriod, g_maShift, g_maMethod, g_maPrice, 0);
if(high > ma && Bid <= ma) res=1;
if(low < ma && Bid >= ma) res=2;
return (res);
}
//+------------------------------------------------------------------+
2021.08.2509:24:56.6292021.08.2023:50:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
2021.08.2509:24:56.6242021.08.2023:45:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5922021.08.2021:35:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5822021.08.2021:05:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
2021.08.2509:24:56.5662021.08.2020:20:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
2021.08.2509:24:56.5542021.08.2018:50:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5532021.08.2018:45:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5532021.08.2018:40:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
2021.08.2509:24:56.6292021.08.2023:50:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
2021.08.2509:24:56.6242021.08.2023:45:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5922021.08.2021:35:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5822021.08.2021:05:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
2021.08.2509:24:56.5662021.08.2020:20:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
2021.08.2509:24:56.5542021.08.2018:50:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5532021.08.2018:45:00 Nerd Trader EURUSD,M5: enter to '2. if (isCrossing)'
2021.08.2509:24:56.5532021.08.2018:40:00 Nerd Trader EURUSD,M5: enter to '1. if (isCrossing)'
両方の条件が合う...だから、最初の結果が得られる
両方の条件が合う...だから、最初の結果が得られる
なぜか1も返ってこないような気がします。
この条件
新しいバーが開かれたことを知らせる。バーの最初のティックでは、open == high == low == close and == Bid - 従って、この条件は以下の通りです。
または
叶わぬ今日、if(i != i)という条件についての質問がありましたが、これらの条件はほぼ同じです。
。
P.S.
、isCrossing() 関数ですべてそのままにしておきました。
なぜか1も返ってこないような気がします。
この条件
は、新しいバーの開店を伝えています。バーの最初のティックでは、open == high == low == close and == Bid - 従って、この条件では
または
叶わぬ今日、if(i != i) という条件についての質問がありましたが、これらの条件はほぼ同じです。
「1 "が返ってくるので、MetaEditorでコードデバッグを行いました。
さらに、すべてが均等であっても、それは最初のティックだけである。
「1 "が返ってくるので、MetaEditorでコードデバッグを行いました。
さらに、すべてが均等であっても、それは最初のティックだけである。
まあ、そうなんですが、私が間違っていました。新バーは、すべての条件を満たした後となります。
ハイとローをオープンに置き換えてみてください。たぶん、あまり戦略には影響しないでしょう。
「1 "が返ってくるので、MetaEditorでコードデバッグを行いました。
さらに、すべてが均等であっても、それは最初のティックだけである。
次のような仕組みになっています。
仕組みはこうです。
これを実行したところ、すべて動作しましたが、f-iが1ティックで2回呼ばれているため、isCrossing()からのメッセージだけが重複しています。
そこで、そのままにしておいたのですが、isCrossing()からはすべて変数に返されるようになりました。重複するものはなく、すべてが機能する。皆さん、ありがとうございます。)
機能の違いについて教えてください。
for (int j = OrdersHistoryTotal()-1; j >= 0; j--)
{
if(OrderSelect(j, SELECT_BY_POS,MODE_HISTORY))
и
int i=OrdersHistoryTotal();
for(int pos=0; pos<i; pos++)
{
if(OrderSelect(pos, SELECT_BY_POS,MODE_HISTORY))