请用这个来张贴代码。.这使它更容易阅读。
你好,一起。
我想知道是否有可能在达到某个周期和/或SL后自动关闭一个订单...
比如说。
我在下午1点开了一笔交易,想让这个订单在报价达到止损点或经过2小时的时间后关闭。
以下是实际的代码。
// 买入标准
如果((TradeHour3==Hour())|(TradeHour4==Hour())|(TradeHour7==Hour())|(TradeHour10==Hour())|(TradeHour17==Hour())|(TradeHour18==Hour())|(TradeHour20==Hour())//Signal Buy
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order",BuyMagicNumber,0,Blue)。
如果(openbuy<1){int buyfail=1;}。
}
}// halt1
如果((halt2!=1)&&(AllowSell==true)){// halt2
RefreshRates();
// 卖出标准
如果((TradeHour12==Hour())|(TradeHour23==Hour()))//发出卖出信号
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,ls,tps, "time trader sell order",SellMagicNumber,0,Green)。
if(opensell<1){int sellfail=1;}.
}
}// halt2
谢谢你
马克
// Buy criteria if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"time trader buy order ",BuyMagicNumber,0,Blue); if(openbuy<1){int buyfail=1;} } }// halt1 if((halt2!=1)&&(AllowSell==true)){// halt2 RefreshRates(); // Sell criteria if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"time trader sell order ",SellMagicNumber,0,Green); if(opensell<1){int sellfail=1;} } }// halt2
我想知道是否有可能在达到某个周期和/或SL后自动关闭订单...
- 如果达到了SL,它就会自己关闭。
- 否则,你只需编写代码就可以了。你的OrderClose()和你对时间的测试在哪里?
- 如果达到了SL,它就会自己关闭。
- 否则,你只需要编码就可以了。你的OrderClose()和你对时间的测试在哪里?
HI WHRoeder,
我想你是指洞口代码还是?
//---- input parameters extern double Lots=0.01; extern int TakeProfit=200; extern int StopLoss=200; extern int Slip=50; extern int BuyMagicNumber =1; extern int SellMagicNumber =2; extern bool AllowBuy=true; extern bool AllowSell=true; extern int TradeHour3=3; extern int TradeHour4=4; extern int TradeHour7=7; extern int TradeHour10=10; extern int TradeHour17=17; extern int TradeHour18=18; extern int TradeHour20=20; extern int TradeHour12=12; extern int TradeHour23=23; //+------------------------------------------------------------------+ //| expert starts | //+------------------------------------------------------------------+ int start() { //---- int StopMultd,Sleeper=1; int digits=MarketInfo("EURUSD",MODE_DIGITS); if(digits==5){StopMultd=10;} else{StopMultd=1;} double TP=NormalizeDouble(TakeProfit*StopMultd,Digits); double SL=NormalizeDouble(StopLoss*StopMultd,Digits); double Slippage=NormalizeDouble(Slip*StopMultd,Digits); // Calculate stop loss double slb=NormalizeDouble(Ask-SL*Point,Digits); double sls=NormalizeDouble(Bid+SL*Point,Digits); // Calculate take profit double tpb=NormalizeDouble(Ask+TP*Point,Digits); double tps=NormalizeDouble(Bid-TP*Point,Digits); //-------------------------------------------------------------------+ //Check open orders //-------------------------------------------------------------------+ if(OrdersTotal()>0){ for(int i=1; i<=OrdersTotal(); i++) // Cycle searching in orders { if (OrderSelect(i-1,SELECT_BY_POS)==true) // If the next is available { if(OrderMagicNumber()==BuyMagicNumber) {int halt1=1;} if(OrderMagicNumber()==SellMagicNumber) {int halt2=1;} } } } //-------------------------------------------------------------------+ if((halt1!=1)&&(AllowBuy==true)){// halt1 // Buy criteria if ((TradeHour3==Hour())||(TradeHour4==Hour())||(TradeHour7==Hour())||(TradeHour10==Hour())||(TradeHour17==Hour())||(TradeHour18==Hour())||(TradeHour20==Hour())) //Signal Buy { int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb,"time trader buy order ",BuyMagicNumber,0,Blue); if(openbuy<1){int buyfail=1;} } }// halt1 if((halt2!=1)&&(AllowSell==true)){// halt2 RefreshRates(); // Sell criteria if ((TradeHour12==Hour())||(TradeHour23==Hour())) //Signal Sell { int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,sls,tps,"time trader sell order ",SellMagicNumber,0,Green); if(opensell<1){int sellfail=1;} } }// halt2 //-------------------------------------------------------------------+ // Error processing //-------------------------------------------------------------------+ if(buyfail==1||sellfail==1){ int Error=GetLastError(); if(Error==130){Alert("Wrong stops. Retrying."); RefreshRates();} if(Error==133){Alert("Trading prohibited.");} if(Error==2){Alert("Common error.");} if(Error==146){Alert("Trading subsystem is busy. Retrying."); Sleep(500); RefreshRates();} } // if(openbuy==true||opensell==true)Sleep(1*60*1000*Sleeper); //------------------------------------------------------------------- return(0); } //+-----------------------------------
实际上,只有一个止损。我只想在新条形图打开2小时后或1:59:59的最后一秒关闭订单......我的问题是将代码填充到我现在的代码中......
循环检查未结订单,使用OrderOpenTime(别忘了先使用OrderSelect),然后检查时间与TimeCurrent,看是否已经过了2小时......如果他们已经关闭了订单。
只需编写代码......这真的不难。
如果我失败了,希望你能给我一些提示;-)
AFAIK这里的每个人都想提供帮助,但不愿意成为任何人的奴隶。
是的,我当然明白......我不希望我的EA有奴隶,....,我唯一需要知道的是如何理解一个程序的工作方式......。
如果你有一个简单的EA,比如SMA Cross......这不是一个很大的问题......但是你想实现的东西越多,就越困难......(至少对我来说是这样)。
你好,一起。
我想知道是否有可能在达到某个周期和/或SL后自动关闭一个订单...
比如说。
我在下午1点开了一笔交易,想让这个订单在报价达到止损点或经过2小时的时间后关闭。
以下是实际的代码。
// 买入标准
如果((TradeHour3==Hour())|(TradeHour4==Hour())|(TradeHour7==Hour())|(TradeHour10==Hour())|(TradeHour17==Hour())|(TradeHour18==Hour())|(TradeHour20==Hour())//Signal Buy
{
int openbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,slb,tpb, "time trader buy order",BuyMagicNumber,0,Blue)。
如果(openbuy<1){int buyfail=1;}。
}
}// halt1
如果((halt2!=1)&&(AllowSell==true)){// halt2
RefreshRates();
// 卖出标准
如果((TradeHour12==Hour())|(TradeHour23==Hour()))//发出卖出信号
{
int opensell=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,ls,tps, "time tradersell order",SellMagicNumber,0,Green)。
if(opensell<1){int sellfail=1;}.
}
}// halt2
谢谢你
马克