<br/ translate="no">
我不知道该算法基于什么策略,输入参数只是交易条件......?
Alex_Pushkin:
我不知道该算法基于什么策略,输入参数只是交易条件......?
策略本身是这样写的
//----最好也避开非净月日,即每月的第一个星期四。 if((!session_found) && (str1.hour==Start_hour_US_session)) { //--- 首次计算欧盟时段的最高点和最低点。 TopRange=iHighest(m_symbol.Name(),Period(),MODE_HIGH,24,1); // 欧盟会议期间的 24 个 M15 酒吧 LowRange=iLowest(m_symbol.Name(),Period(),MODE_LOW,24,1); // 欧盟会议期间的 24 个 M15 酒吧 //--- if(TopRange<=0.0 || LowRange<=0.0) return; //--- if((TopRange-LowRange)<=ExtSmallEUSessionPips) small_session=true; else small_session=false; session_found=true; string text=(small_session)?"true":"false"; Print("Identified new EU session + ["+ DoubleToString(LowRange,m_symbol.Digits())+","+ DoubleToString(TopRange,m_symbol.Digits())+"]"+ " DayOfYear()="+IntegerToString(str1.day_of_year)+" small? "+text); }
我们有一个输入参数"Start_hour_US_session"-- 一旦 我们 找到当前时间(我们只比较小时数)与该参数 的对应关系,我们就开始寻找24 个条形图期间最高价格 的最高值和 24 个条形图期间最低价格的最低值。如果这些价格之差小于或等于输入参数"Small EU Session(以点为单位)",则表示已检测到"Small Session"(以点为单位)。- 那么就检测到了一个 "小时段"(波动小)--"small_session"。
当我们在 "美国时段 "内,并发现一个 "小时段"(波动小)--"small_session"时
if(session_found && small_session && (str1.hour>=Start_hour_US_session) && (str1.hour<End_hour_US_session)) // 在美国会议时间内? { //--- 计算欧盟会话范围 //--- Print("Am in US session....small_session, bought, sold = " + small_session+bought+sold); //--- Print("TopRange = " + TopRange + "LowRange = " + LowRange); int h=str1.hour; int m=str1.min; if(h>Start_hour_EU_session+5 && h<Start_hour_EU_session+10) {//--- 至少应完成一个美国会话条形图 //--- Print("Could be buying/selling... "+h+": "+m); double low=iLow(1); double high=iHigh(1); //--- if(low==0.0 || high==0.0) return; //--- if(!RefreshRates()) return; if((!bought) && (low>(TopRange+Point()*3))) { if(OpenBuy(m_symbol.Bid()-ExtStopLoss,m_symbol.Ask()+ExtTakeProfit)) bought=true; } if((!sold) && (high<(LowRange-Point()*3))) { if(OpenSell(m_symbol.Ask()+ExtStopLoss,m_symbol.Bid()-ExtTakeProfit)) sold=true; } } // 在美国第二时间结束。 }// 结束小型会话
我们要等到进入 "欧盟时段",并从第一条柱状图中获取低点和高点值。
开仓买入的条件:如果当天没有开仓买入,且第 1 个条形图的最低价大于 "US_session "中 24 个条形图期间最高价的最高值:
if((!bought) && (low>(TopRange+Point()*3))) { if(OpenBuy(m_symbol.Bid()-ExtStopLoss,m_symbol.Ask()+ExtTakeProfit)) bought=true; }
卖出条件: 如果当日尚未建立卖出仓位,且条形图 1 的最高价低于 "US_session "中 24 个条形图期间的最低价:
if((!sold) && (high<(LowRange-Point()*3))) { if(OpenSell(m_symbol.Ask()+ExtStopLoss,m_symbol.Bid()-ExtTakeProfit)) sold=true; }
ds
EURUSD breakout:
本EA交易在两个交易时段中进行交易,从指定的时段开始时间开始交易i。止损。获利。
作者: Vladimir Karputov