[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 87

 
Mathemat:

对不起,但这绝对是在年鉴中。对英语的无知不是借口。

说实话,我不知道欧元兑美元在微观上的点差是多少。你可能已经被禁止进入这个论坛了。这些混蛋总是在想办法不让你进去。

我成功地登录了,谢谢你。
 

你好,请你帮助解决一个,我认为是最基本的问题。

int start()
{
OrderSend(Symbol(),OP_BUY,1,Ask,2,0,0);
Alert(GetLastError() );
return;
}

脚本打开一个市场订单,一切都很正常。但是,如果我设置SL或TP的任何值,我得到"错误的停止"错误。

int start()
{
OrderSend(Symbol(),OP_BUY,1,Ask,2,Bid-50*Point,Bid+50*Point);
Alert(GetLastError();
return;
}

这个代码不再起作用了。怎么了?我搞不清楚...

int start()
{
OrderSend(Symbol(),OP_BUY,1,Ask,2,1.31845,1.40000);
Alert(GetLastError() );
return;
}

即使我输入止损和利润的数值,它也不起作用。从订单到停止订单的最小距离是可以的。

 

亲爱的专业人员!我有一个问题。我有一个EA,它通过几个标准进行交易,如何让它分别修改订单? 例如,我通过不同的信号开了两个买入订单,一个盈亏平衡水平是90pp,增量为40pp,另一个是50pp,增量为50pp。因为我已经试过了,我已经看到我得到了多少信号,我不知道如何使用它们。事先非常感谢!

 
azik1306:

亲爱的专业人员!我有一个问题。我有一个EA,它通过几个标准进行交易,如何让它分别修改订单? 例如,我通过不同的信号开了两个买入订单,一个盈亏平衡水平是90pp,增量为40pp,另一个是50pp,增量为50pp。因为我已经试过了,我已经看到我得到了多少信号,我不知道如何使用它们。我已经试过了,但我不知道如何使用它。

-可以通过不同的信号与不同的魔术号码进行交易。

-可以在开仓交易时将 "标记"(例如,同一级别的拖网)放在评论区,然后进行分析。

在没有看到你的问题的代码的情况下,我不太明白你到底想单独做什么

 

该代码大约如下。

for( int c=1; c<=OrdersTotal(); c++) // 订单循环
{
OrderSelect(c-1,SELECT_BY_POS); // 如果有其他
// 订单分析:
if(OrderMagicNumber()<1000)

if (R==1 && SL<OrderOpenPrice() && Bid-OrderOpenPrice() >( (NoLoss) *Point ) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*(NoLoss),OrderTakeProfit(),0,Blue);
return;
}
如果(R==2 && SL>OrderOpenPrice() && OrderOpenPrice()-Ask>((NoLoss)*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*(NoLoss),OrderTakeProfit(),0,Blue);
return;
}
如果(R==1 && SL>=OrderOpenPrice() && Bid - SL > ((NoLoss*Point)+(StepLoss*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss,OrderTakeProfit(),0,Blue);
return;
}
如果(R==2 && SL<=OrderOpenPrice() && SL-Ask>((NoLoss*Point)+(StepLoss*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss,OrderTakeProfit(),0,Blue);
return;
}
返回;
}
//--------------------------------------------------------------------

for(c=1; c<=OrdersTotal(); c++) //订单循环
{
OrderSelect(c-1,SELECT_BY_POS); //如果有其他
//订单分析:
if (OrderMagicNumber()>1000)
if (Z==3 && Bid-OrderOpenPrice()>( (NoLoss1)*Point) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1,OrderTakeProfit(),0,Blue);
return;
}
if (Z==4 && SL1>OrderOpenPrice() && OrderOpenPrice()-Ask>NoLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(), Ask+Point*NoLoss1, OrderTakeProfit(),0,Blue);
return;
}
如果(Z==3 && SL1>=OrderOpenPrice() && Bid - SL1 > ((NoLoss1*Point)+(StepLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1,OrderTakeProfit(),0,Blue);
return;
}
如果(Z==4 && SL1<=OrderOpenPrice() && SL1-Ask>((NoLoss1*Point)+(StepLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*NoLoss1,OrderTakeProfit(),0,Blue);
return;
}
return;
}

//--------------------------------------------------------------------
//订单价值
RefreshRates(); //刷新数据
Min_Lot=MarketInfo(Symb,MODE_MINLOT); // Min.lots
Free =AccountFreeMargin(); //自由资金
One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);//1手的价值
Step =MarketInfo(Symb,MODE_LOTSTEP); //步骤变化大小

if (Lots > 0) //如果设定了lot,那么
Lts =Lots;//与他们合作
else //%的免费资金
Lts=MathFloor(Free*Prots/One_Lot/Step)*Step;//要开

if(Lts < Min_Lot) Lts=Min_Lot; //不低于最低
if(Lts*One_Lot > Free) //很多比免费更贵。
{
Alert(" Not enough money " , Lts," Lots");
return; // Exit start()
}
//--------------------------------------------------------------- 8 --
// Opening orders

{
if (Total<2 && Opn_B==true && B==false)
{
// Crition to open a Buy order.买入
RefreshRates(); // 更新数据
SL=Bid - New_Stop(StopLoss)*Point; // 计算SL的开盘。
TP=Bid + New_Stop(TakeProfit)*Point; // 计算TP的开盘。
Alert("Attempting to open Buy. Waiting for reply...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL,TP,NULL,y); //Open Buy
if (Ticket > 0) // It worked :)
{
Alert ("Opened Buy order " ,Ticket);
B=true;
S=false;
Y=OrderMagicNumber();
R=1;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue;// 重试
// 退出 start()
}
if (Total<2 && Opn_S==true && S==false) // 打开订单。none +
{
Sleep(10000); // open Sell crit.卖出
RefreshRates(); // 更新数据
SL=Ask + New_Stop(StopLoss)*Point; // 计算SL的开盘。
TP=Ask - New_Stop(TakeProfit)*Point; // 计算TP的开盘。
Alert("Attempting to open Sell. Waiting for reply...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL,TP,NULL,y);//Open Sel
if (Ticket > 0) // It worked :)
{
Alert ("Sell order opened " ,Ticket);
S=true;
B=false;
Y=OrderMagicNumber();
R=2;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue;//重试
//退出 start()
}

if (Total<2 && Opn_B1==true && B1==false)
{
RefreshRates(); //更新数据
SL1=Bid - New_Stop1(StopLoss1)*Point; //计算SL open
TP1=Bid + New_Stop1(TakeProfit1)*Point; //计算TP开仓。
Alert("Attempting to open Buy. Waiting for reply...");
Ticket=OrderSend(Symb,OP_BUY,Lts,Ask,2,SL1,TP1,NULL,x); //Open Buy
if (Ticket > 0) // It worked :)
{
Alert ("Opened Buy order " ,Ticket);
B1=true;
S1=false;
X=OrderMagicNumber();
Z=3;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue;//重试
//退出 start()
}
if (Total<2 && Opn_S1==true && S1==false) //开单。none +
{
Sleep(10000); // open Sell crit.卖出
RefreshRates(); // 更新数据
SL1=Ask + New_Stop1(StopLoss1)*Point; // 计算SL开盘。
TP1=Ask - New_Stop1(TakeProfit1)*Point; // 计算TP开盘。
Alert("Attempting to open Sell. Waiting for reply...");
Ticket=OrderSend(Symb,OP_SELL,Lts,Bid,2,SL1,TP1,NULL,x);//Open Sel
if (Ticket > 0) // It worked :)
{
Alert ("Sell order open " ,Ticket);
S1=true;
B1=false;
X=OrderMagicNumber();
Z=4;
return; // Exit start()
}
if (Fun_Error(GetLastError())==1) // Error handling
continue; // Retry
// Exit start()
}
break; // exit while
}

 
试过orderselect和majik,EA混淆了订单。
 
azik1306:

代码是这样的。


用文件附加这样的宽代码,或者至少用SRC(可在上部编辑栏中选择),因为眼睛阅读这样的行是令人厌烦的。
 
azik1306:

该代码大约如下。

for( int c=1; c<=OrdersTotal(); c++) // 订单循环
{
OrderSelect(c-1,SELECT_BY_POS); // 如果有一个下一个
// 订单分析。
如果(OrderMagicNumber()<1000)
如果(R==1 && SL<OrderOpenPrice() && Bid-OrderOpenPrice()>((NoLoss)*Point) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*(NoLoss), OrderTakeProfit(),0,Blue)。
返回。
}
如果(R==2 && SL>OrderOpenPrice() && OrderOpenPrice()-Ask>((NoLoss)*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*(NoLoss),OrderTakeProfit(),0,Blue)。
返回。
}
如果(R==1 && SL>=OrderOpenPrice() && Bid - SL > ((NoLoss*Point)+(StepLoss*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(), Bid-Point*NoLoss,OrderTakeProfit(),0,Blue)。
返回。
}
如果(R==2 && SL<=OrderOpenPrice() && SL-Ask>((NoLoss*Point)+(StepLoss*Point))
{
OrderModify(OrderTicket(),OrderOpenPrice(), Ask+Point*NoLoss,OrderTakeProfit(),0,Blue)。
返回。
}
返回。
}
//--------------------------------------------------------------------
// 原则上,你不需要再写任何东西:反正它不会被执行。

for(c=1; c<=OrdersTotal(); c++) // 订单循环

{
OrderSelect(c-1,SELECT_BY_POS); // 如果有一个下一个
// 订单分析。
如果(OrderMagicNumber()>1000)
如果(Z==3 && Bid-OrderOpenPrice()>((NoLoss1)*Point) )
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1, OrderTakeProfit(),0,Blue)。
返回。
}

如果(Z==4 && SL1>OrderOpenPrice() && OrderOpenPrice()-Ask>NoLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(), Ask+Point*NoLoss1,OrderTakeProfit(),0,Blue)。
返回。
}
如果(Z==3 && SL1>=OrderOpenPrice() && Bid - SL1 > ((NoLoss1*Point)+(StepLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*NoLoss1, OrderTakeProfit(),0,Blue)。
返回。
}
如果(Z==4 && SL1<=OrderOpenPrice() && SL1-Ask>((NoLoss1*Point)+(StepLoss1*Point)
{
OrderModify(OrderTicket(),OrderOpenPrice(), Ask+Point*NoLoss1,OrderTakeProfit(),0,Blue)。
返回。
}
返回 // 但 "为了安全起见",也有一个 "测试镜头";)
}

........其他都不重要 .......

//

//--------------------------------------------------------------------
// 订单价值

 
谢谢,我现在就去试试。
 
纠正了代码,但EA不想单独接近每个订单