新手 想建立一個五日高點突破的EA 懇請指點一二 - 页 2 12 新评论 Ziheng Zhuang 2019.05.23 10:42 #11 陳柏昌: SendNotification( my_symbol + "\n" + "注意!!五日高低區間已穿越 ( " +時間架構T +" )" ); 請問 目前圖表如果是H1的時間架構 要怎麼讓時間架構顯示在 通知內呢? 条件成立时发布一次通知,但是要避免一个H1内多次发送,记录每次发送的时间,还在H1的时间内就不用继续发送。 你目前的基础太差了,你连什么是指标都不清楚,先搞清楚指标,EA,脚本的区别。 建议去学习code base 中的例子。 陳柏昌 2019.05.23 13:37 #12 大大說中了!! 現在一分鐘內可以狂發很多次訊息與下很多次單 該怎麼避免呢? 陳柏昌 2019.05.23 13:40 #13 請問 目前圖表如果是H1的時間架構就發佈通知 : H1跳出5區間請問 目前圖表如果是的時間架構就發佈通知 : H4跳出5區間該怎麼寫呢? Ziheng Zhuang 2019.05.23 16:05 #14 你基础太差了,我写了你也看不懂。 建议你先学着写指标,试着先2均线的指标,均线交叉时报警,看看如何控制报警频次。 陳柏昌 2019.05.24 08:22 #15 陳柏昌: 大大說中了!! 現在一分鐘內可以狂發很多次訊息與下很多次單 該怎麼避免呢?這個似乎可以 還在測試中 static datetime PTime; datetime CTime = SeriesInfoInteger (Symbol(), Period(), SERIES_LASTBAR_DATE); if (PTime == 0) { PTime = CTime; CheckNew = false; } else if (PTime != CTime) { PTime = CTime; CheckNew = true; } else { CheckNew = false; } 陳柏昌 2019.05.29 01:17 #16 //+----------------------------------------------- -------------------+ //| EA初始化1 //+----------------------------------------------- -------------------+ #include<Trade\Trade.mqh>//包含執行的交易庫 #include<Trade\PositionInfo.mqh>//包含部位的資訊庫 input int UpPeriod=10; input int DownPeriod=10; bool SendNotification; int CheckBar; int Kcount; int iKcount; input int 已有部位 = 0; int iMyPositions; int iiMyPositions; double UPindex; //存儲句柄 double Downindex; //存儲句柄 double Low_buf[]; //存儲每個柱形價格的動態數組 double High_buf[]; //存儲每個柱形價格的動態數組 double Close_buf[]; //存儲每個柱形價格的動態數組 double input 下單量 =0.01; double hi5; double low5; ENUM_TIMEFRAMES my_timeframe; //存儲時間框架的變量 CTrade m_Trade; //執行交易的結構體 CPositionInfo m_Position; //獲取持倉信息的結構體 //+----------------------------------------------- -------------------+ //| EA初始化2 //+----------------------------------------------- -------------------+ int OnInit() { iMyPositions = 已有部位; iiMyPositions = 已有部位; my_timeframe= PERIOD_CURRENT; //保存圖表的當前時間框架,使EA對其的進一步操作。 ChartIndicatorAdd ( ChartID (), 0 ,hi5); //將指標添加到價格圖表中 ChartIndicatorAdd ( ChartID (), 0 ,low5); //將指標添加到價格圖表中 ArraySetAsSeries (Close_buf, true ); //將 數組的索引設置為時間序列 return(0); //返回0,初始化結束 } //+----------------------------------------------- -------------------+ //| EA去初始化函數| //+----------------------------------------------- -------------------+ void OnDeinit(const int reason) { IndicatorRelease (UPindex); //刪除指標句柄並釋放分配給它的存儲空間 IndicatorRelease (Downindex); //刪除指標句柄並釋放分配給它的存儲空間 ArrayFree(Close_buf); //釋放buf的數據 } //+----------------------------------------------- -------------------+ //| EA的tick函數| //+----------------------------------------------- -------------------+ void OnTick() { if(CopyClose(Symbol(),my_timeframe,0,2,Close_buf)!=2) //將價格數據拷貝到動態數Close_buf中,以於進一步處理 { Print("Failed to copy data from the indicator buffer or price chart buffer"); //打印相關錯誤信息到日誌文件 return; //並退出函數 } UPindex=iHighest(Symbol(),my_timeframe,MODE_HIGH,UpPeriod,2); double hi5=iHigh(Symbol(),my_timeframe,UPindex); Downindex=iLowest(Symbol(),my_timeframe,MODE_LOW,DownPeriod,2); double low5=iLow(Symbol(),my_timeframe,Downindex); iKcount = SeriesInfoInteger (Symbol(), Period(), SERIES_BARS_COUNT); if (Kcount == 0) Kcount = iKcount; if (Kcount == iKcount) CheckBar = 0 ; if (iKcount != Kcount ) CheckBar = 1 ; if (CheckBar == 1 ) //////////////新Bar 超大if { // SendNotification( // "hi5" + "\n " + hi5 + "\n " // "Close_buf[1]" + "\n " + Close_buf[1] + "\n " // "low5" + "\n " + low5 + "\n " // ); if(Close_buf[1]>hi5) //收盤站上 5周期高点 { if (iMyPositions<0) { m_Trade.Buy( 下單量 ,Symbol()); iMyPositions=0; } if (iMyPositions == 0 ) { m_Trade.Buy( 下單量 ,Symbol()); iMyPositions=1; } if( iMyPositions != iiMyPositions) SendNotification( Symbol() + "\n" + "站上 KF" +"\n" + "請務必評估自身風險承受度與資金控管,善設停損。" // 通知文本 ); } if(Close_buf[1]<low5) //收盤跌破5周期低点 { if (iMyPositions>0) { m_Trade.Sell( 下單量 ,Symbol()); iMyPositions=0; } if (iMyPositions == 0 ) { m_Trade.Sell( 下單量 ,Symbol()); iMyPositions=-1; } if( iMyPositions != iiMyPositions) SendNotification( Symbol() + "\n" + "跌破 KF" +"\n" + "請務必評估自身風險承受度與資金控管,善設停損。" // 通知文本 ); } iiMyPositions = iMyPositions; Kcount = iKcount ; }//////////////新Bar 超大if } //+----------------------------------------------- -------------------+ 陳柏昌 2019.05.29 01:18 #17 以上似乎可以 但偶爾會少下單 是甚麼原因呢? 陳柏昌 2019.06.12 01:57 #18 可以利用下單回報 如果沒下成功 可以重送單 do { m_Trade.PositionClose( Symbol(),偏差值); Sleep(睡覺);Redone=true; Print(Symbol(), "做多_平空單 = ",m_Trade.ResultRetcode()+". Code description: ",m_Trade.ResultRetcodeDescription()); if(m_Trade.ResultRetcode()==10009) Redone = false ; if(m_Trade.ResultRetcode()==10036) Redone = false ; } while(Redone) 李幼黄 李 2019.06.12 14:50 #19 Ziheng Zhuang: 你基础太差了,我写了你也看不懂。 建议你先学着写指标,试着先2均线的指标,均线交叉时报警,看看如何控制报警频次。这个管用,1均线试试😄 12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
);
請問 目前圖表如果是H1的時間架構
要怎麼讓時間架構顯示在 通知內呢?
条件成立时发布一次通知,但是要避免一个H1内多次发送,记录每次发送的时间,还在H1的时间内就不用继续发送。
你目前的基础太差了,你连什么是指标都不清楚,先搞清楚指标,EA,脚本的区别。
建议去学习code base 中的例子。
你基础太差了,我写了你也看不懂。
建议你先学着写指标,试着先2均线的指标,均线交叉时报警,看看如何控制报警频次。
大大說中了!! 現在一分鐘內可以狂發很多次訊息與下很多次單 該怎麼避免呢?
可以利用下單回報
如果沒下成功
可以重送單
do
{ m_Trade.PositionClose( Symbol(),偏差值);
Sleep(睡覺);Redone=true;
Print(Symbol(), "做多_平空單 = ",m_Trade.ResultRetcode()+". Code description: ",m_Trade.ResultRetcodeDescription());
if(m_Trade.ResultRetcode()==10009) Redone = false ;
if(m_Trade.ResultRetcode()==10036) Redone = false ;
}
while(Redone)
你基础太差了,我写了你也看不懂。
建议你先学着写指标,试着先2均线的指标,均线交叉时报警,看看如何控制报警频次。