[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 594

 

for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position
OrderSymbol() ==lSymbol()) // check for symbol
{

?

 

请帮助解决代码问题!为什么我在这个代码中得到了138,这与它有什么关系?交易打开,但当你关闭时,价格不知为何不一样,这是什么?一切都很简单。专家顾问在S蜡烛应该关闭交易,当分形被穿透时打开。提前感谢提示

外来的int s=5;







Extern int stime=60;
extern int lots=1;
extern int slippage=5;
extern double sl=NULL;
extern double tp=NULL;
double upfr,dnfr=0.0;//最后分形的水平
double tClose=NULL;
double tOpen=NULL;
int flag=0;
int init()
{
//----
return(0);
}
//+
//|专家去初始化功能|

//+------------------------------------------------------------------+
int deinit()
{
//----

//
return(0);
}
//+------------------------------------------------------------------+
//|专家启动函数 |
//+------------------------------------------------------------------+

int start()//在故障时打开,在s烛光后关闭
{
//----
upfr=iFractals(Symbol(),PERIOD_H1,MODE_UPPER,4)
dnfr=iFractals(Symbol(),PERIOD_H1,MODE_LOWER,4);
//OPPER ORDERS ON PROBIT
if(upfr>0 && High[1]>upfr &&)flag==0) //如果分形上升,并且超过了分形水平
{
tOpen=Time[0];
tClose=tOpen+s*stime*60;
OrderSend(Symbol(),OP_BUY,lot,Bid,slipage,tp);
flag=1;
}
如果(dnfr>0 && Low[1]<dnfr && flag==0)//如果分形下跌且分形水平下降
{
tOpen=Time[0];
tClose=tOpen+s*stime*60;
OrderSend(Symbol(,OP_SELL,lot,Ask,sl, sl, tp);
flag=1;
}

//在时间结束时关闭订单
if(Time[0]>=tClose )//如果关闭前的时间已过
{
Print("CLOSE FUNCTION");
OrClose();
flag=0;
}


//----
return(0);
}
//+------------------------------------------------------------------+
//关闭所有订单
void OrClose()
{
for(int i=OrdersTotal()-1;i>=1;i-)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),lot,OrderOpenPrice(),0.0005);
}
}
return(0);
}
 
Qwertee:

请帮助解决代码问题!为什么我在这段代码中得到一个138的错误? 这和它有什么关系?

OrderClose(OrderTicket(),lots,OrderOpenPrice(),0.0005);

改为

         if(OrderType()==OP_BUY)
           {
            OrderClose(OrderTicket(),OrderLots(),Bid,slippage);
           }
         else
           {
            OrderClose(OrderTicket(),OrderLots(),Ask,slippage);
           }
 
下午好。处理Zigzag指标的专业人士,建议如何获得顶部的最后两个值:High和Low?
 

下午好。

请帮助我开启订单。我在模拟账户 上使用一个EA,当我得到一个买入或卖出条件时,它显示130个错误。

这里是订单开放功能。

int NewOrder(int Cmd,double Lot)
{double TP=0; //тейкпрофит
 double SL=0; //стоплосс
 double PR=0; //Цена
 while(!IsTradeAllowed()) Sleep(100);
 RefreshRates ();
 if(Cmd==OP_BUY)
   {PR=Ask;
    if(TakeProfit>0) TP=NormalizeDouble(Ask+TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Bid-StopLoss*Point,Digits);}
 if(Cmd==OP_SELL)
   {PR=Bid;
    if(TakeProfit>0) TP=NormalizeDouble(Bid-TakeProfit*Point,Digits);
    if(StopLoss>0) SL=NormalizeDouble(Ask+StopLoss*Point,Digits);}
 int tic=OrderSend(Symbol(),Cmd,Lot,PR,20,SL,TP,"",0,0,CLR_NONE);
 if(tic<0) Print("Ошибка открытия ордера: ",GetLastError());
return(tic);}

我检查了其他的EA,发现地段计算一切正常。

在Alpari的模拟账户,微观类型。采取和停止是100p,所以,10点,因为Alpari有5个标记。

 
使开盘价 正常化
 
FAQ:
使开盘价正常化。


你如何使它正常化?

对吗?

PR=NormalizeDouble(Ask,Digits);

如果是这样,就没有什么变化。

我在编程方面还没有什么经验。能否请你解释一下如何将其规范化?

 
然后事先检查止损和利润的大小,如果它大于你的止损和利润--调整它们。如果它是零,那么你需要先设置一个止损和利润为零的订单,然后将它们修改到合适的水平。
 

晚上好。问题:当我关闭一个交易的一部分时,EA会用一个新的票据打开一个新的交易。新秩序的魔力是否依然如故?

 
安装了MetaTrader 4,开设了一个模拟账户。试图打开/关闭订单。现在我怎样才能使终端本身在价格上涨时触发卖单,在价格下跌时触发买单,使用 "你需要2个蜡烛的差价来关闭旧的订单并开立新的订单 "这样的信息?