谁来为5WMZ写个剧本吧。 - 页 16 1...91011121314151617 新评论 Profitabl 2010.09.11 10:16 #151 而我只是在寻找头寸不平仓的原因,在头寸平仓 区,当它是正确的。什么才是正确的呢? Leonid Borsky 2010.09.11 10:28 #152 ================== 移除你的关闭块。什么是正确的呢.... 在 这一行之前 插入这段代码: if(total<1){ //如果没有未结头寸 //============== Закрытие позиций ============================= if(total>=1){ //если "есть открытых позиций" //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { //----------------------------------------------------- if (OrderType() == OP_BUY) { //бай позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { //селл позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total }//если "есть открытых позиций" //============= конец блока закрытия ===================== Leonid Borsky 2010.09.11 10:38 #153 当开仓 时,你调用GetLastError()错误函数,但由于某些原因,在代码中没有对它的引用! 你为什么把它从我的代码中删除?- //-- Подключаемые модули -- #include <stderror.mqh> #include <stdlib.mqh> Profitabl 2010.09.11 10:39 #154 被测试,但没有在22个位置关闭。 我没有抛出任何东西,这是一个新的代码,因为该EA没有与你的交易,虽然它是测试。 extern double Lots = 0.1; extern double TakeProfit = 120; extern double StopLoss = 120; //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int cnt, ticket, total; static int prevtime = 0; if (Time[0] == prevtime) return(0); //если появился новый бар prevtime = Time[0]; // начинаем работу //+------------------------------------------------------------------+ //| Открытие позиций понедельника | //+------------------------------------------------------------------+ if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени // BUY if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-40*Point,Ask+120*Point,"Regulest",0,0,Green);} if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); }} // SELL if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+40*Point,Bid-100*Point,"Regulest",0,0,Red); if(ticket < 0) { Print("Ошибка открытия ордера SELL #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } } //+------------------------------------------------------------------+ //| Закрытие позиций | //+------------------------------------------------------------------+ if(total>=1){ //если "есть открытых позиций" //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { //----------------------------------------------------- if (OrderType() == OP_BUY) { //бай позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { //селл позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total }//если "есть открытых позиций" } return(0); }} Leonid Borsky 2010.09.11 10:53 #155 extern double Lots = 0.1; extern double TakeProfit = 120; extern double StopLoss = 120; //-- Подключаемые модули -- #include <stderror.mqh> #include <stdlib.mqh> //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { int cnt, ticket, total; static int prevtime = 0; if (Time[0] == prevtime) return(0); //если появился новый бар prevtime = Time[0]; // начинаем работу //+------------------------------------------------------------------+ //| Открытие позиций понедельника | //+------------------------------------------------------------------+ if(total<1){ //если нет открытых позиций" if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени //--------------------------------------------- // BUY--------------------- if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-40*Point,Ask+120*Point,"Regulest",0,0,Green); if(ticket < 0) { Print("Ошибка открытия ордера BUY #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } // SELL----------------------- if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+40*Point,Bid-100*Point,"Regulest",0,0,Red); if(ticket < 0) { Print("Ошибка открытия ордера SELL #", GetLastError()); Sleep(10000); prevtime = Time[1]; return (0); } } //----------------------------- } } }// если нет открытых позиций //+------------------------------------------------------------------+ //| Закрытие позиций | //+------------------------------------------------------------------+ if(total>=1){ //если "есть открытых позиций" //---------------------------------------------------------------------- for (int v=0; v<OrdersTotal(); v++) { if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) { if (OrderSymbol()==Symbol()) { //----------------------------------------------------- if (OrderType() == OP_BUY) { //бай позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию return(0); // выходим } } //-------------------------------------------------------- if (OrderType() == OP_SELL) { //селл позиция if ( DayOfWeek()==1 && Hour() == 22) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию return(0); // выходим } } //------------------------------------------------------- } // Symbol() } // select } //total }//если "есть открытых позиций" // return(0); } 这样试试吧。并仔细检查买入和卖出的开放条件。 ( Close[1]>=Open[24] && ..... ......) Profitabl 2010.09.11 11:03 #156 奇怪的是,我设法重写了基础MT4分布式移动平均线EA的代码。在测试器中,交易被测试,在22中,交易被关闭,EA是否会自己交易我不知道。如果你需要,这里有代码。 //+------------------------------------------------------------------+ //| Moving Average.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #define MAGICMA 20050610 extern double Lots = 0.1; extern double TakeProfit = 120; extern double StopLoss = 120; //extern double MaximumRisk = 0.02; //extern double DecreaseFactor = 3; //extern double MovingPeriod = 12; //extern double MovingShift = 6; //+------------------------------------------------------------------+ //| Calculate open positions | //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0; //---- for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA) { if(OrderType()==OP_BUY) buys++; if(OrderType()==OP_SELL) sells++; } } //---- return orders volume if(buys>0) return(buys); else return(-sells); } //+------------------------------------------------------------------+ //| Check for open order conditions | //+------------------------------------------------------------------+ void CheckForOpen() { int res; if(Volume[0]>1) return; if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени if ( Close[1]>= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { res=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+40*Point,Bid-100*Point,"Regulest",MAGICMA,0,Red); return; }}} //---- buy conditions if ( DayOfWeek()==5){//если сегодня вечер пятницы if ( Hour() == 23) {//если - 22 часа терминального времени if ( Close[1]<= Open[24] && Close[23]<=Open[48] && Close[47]<=Open[72]) { res=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-40*Point,Ask+120*Point,"Regulest",MAGICMA,0,Blue); return; }}} //---- } //+------------------------------------------------------------------+ //| Check for close order conditions | //+------------------------------------------------------------------+ void CheckForClose() { double ma; //---- go trading only for first tiks of new bar if(Volume[0]>1) return; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue; //---- check order type if(OrderType()==OP_BUY) { if ( DayOfWeek()==1 && Hour() == 22) OrderClose(OrderTicket(),OrderLots(),Bid,3,White); break; } if(OrderType()==OP_SELL) { if( DayOfWeek()==1 && Hour() == 22) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); break; } } //---- } //+------------------------------------------------------------------+ //| Start function | //+------------------------------------------------------------------+ void start() { //---- check for history and trading if(Bars<100 || IsTradeAllowed()==false) return; //---- calculate open orders by current symbol if(CalculateCurrentOrders(Symbol())==0) CheckForOpen(); else CheckForClose(); //---- } //+------------------------------------------------------------------+ Profitabl 2010.09.11 11:08 #157 leonid553: 这样试试吧。并仔细检查买入和卖出的开放条件。 ( Close[1]>=Open[24] && ..... ......) 扔掉这个,谢谢,都是用移动Avrage代码解决的。如果他不在周一亲自做交易,我们就继续讨论。我希望我的tehanalysis方法是值得的,四个GBPUSD、EURUSD、USDJPY、USDCHF的EA可以,从一个CHF来看,带来很好的利润。 Leonid Borsky 2010.09.11 11:14 #158 Profitabl: 奇怪的是,我设法重写了基本的MT4分布式移动Aviagre EA的代码。 在测试器中,交易被测试,在22中,交易被关闭,EA是否会自己交易我不知道。 如果你需要,这里有代码。 不幸的是,这个顾问只能在测试仪中正常工作....。 在线 - 超过一半的信号将被错过。这是因为这种情况。 if(Volume[0]>1) return; Profitabl 2010.09.11 11:26 #159 该怎么做,如何改变它,也许只是删除它,因为Movinga参数已经不在代码中了。 使用此代码的Movinga如何执行所有交易? 你需要让所有的交易被执行,不会有很多,一天一次。 它需要专家顾问做20-40次尝试,并在23点出现开盘价后半小时内开仓。 这意味着使用你的代码,专家顾问可以在周二开仓,而在周四和周五错过了点位。 Vitaliy 2010.09.11 11:45 #160 Profitabl: 该怎么做,如何改变它,也许只是删除它,因为Movinga参数已经不在代码中了。 使用此代码的Movinga如何执行所有交易? 你需要让所有的交易被执行,不会有很多,一天一次。 它需要专家顾问做20-40次尝试,并在23点出现开盘价后半小时内开仓。 这意味着使用你的代码,专家顾问可以在周二开仓,而在周四和周五错过了点位。 是的,删除所有这些行。按照你的顾问的逻辑,它们是不必要的。 1...91011121314151617 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
而我只是在寻找头寸不平仓的原因,在头寸平仓 区,当它是正确的。什么才是正确的呢?
==================
移除你的关闭块。什么是正确的呢....
在 这一行之前 插入这段代码:
if(total<1){ //如果没有未结头寸
当开仓 时,你调用GetLastError()错误函数,但由于某些原因,在代码中没有对它的引用!
你为什么把它从我的代码中删除?-
被测试,但没有在22个位置关闭。 我没有抛出任何东西,这是一个新的代码,因为该EA没有与你的交易,虽然它是测试。
这样试试吧。并仔细检查买入和卖出的开放条件。
( Close[1]>=Open[24] && ..... ......)
奇怪的是,我设法重写了基础MT4分布式移动平均线EA的代码。在测试器中,交易被测试,在22中,交易被关闭,EA是否会自己交易我不知道。如果你需要,这里有代码。
这样试试吧。并仔细检查买入和卖出的开放条件。
( Close[1]>=Open[24] && ..... ......)
扔掉这个,谢谢,都是用移动Avrage代码解决的。如果他不在周一亲自做交易,我们就继续讨论。我希望我的tehanalysis方法是值得的,四个GBPUSD、EURUSD、USDJPY、USDCHF的EA可以,从一个CHF来看,带来很好的利润。
奇怪的是,我设法重写了基本的MT4分布式移动Aviagre EA的代码。 在测试器中,交易被测试,在22中,交易被关闭,EA是否会自己交易我不知道。 如果你需要,这里有代码。
不幸的是,这个顾问只能在测试仪中正常工作....。
在线 - 超过一半的信号将被错过。这是因为这种情况。
该怎么做,如何改变它,也许只是删除它,因为Movinga参数已经不在代码中了。
使用此代码的Movinga如何执行所有交易?
你需要让所有的交易被执行,不会有很多,一天一次。 它需要专家顾问做20-40次尝试,并在23点出现开盘价后半小时内开仓。
这意味着使用你的代码,专家顾问可以在周二开仓,而在周四和周五错过了点位。
该怎么做,如何改变它,也许只是删除它,因为Movinga参数已经不在代码中了。
使用此代码的Movinga如何执行所有交易?
你需要让所有的交易被执行,不会有很多,一天一次。 它需要专家顾问做20-40次尝试,并在23点出现开盘价后半小时内开仓。
这意味着使用你的代码,专家顾问可以在周二开仓,而在周四和周五错过了点位。