任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 750

 
noob1:
你好。有什么建议吗? 我想在下完挂单后,根据第一根柱子的低点和高点分别计算买入和卖出的StopLoss。但我没有得到任何结果,只有130个错误,仅此而已。预先感谢你。
是同一张票吗?而且到止损的距离可能太小。
 
simpleton:

检查OrderOpenPrice()是否离SL太近,以及止损是否 "在价格的右边"。你可以在这里 阅读。

止损和止盈价格不能离市场太近。以点为单位的最小止损距离可以通过MarketInfo() 函数和MODE_STOPLEVEL参数获得。如果出现错误的或不正常的停止,将产生错误130(ERR_INVALID_STOPS)。

在这种情况下,也就是说,对于一个挂单,"市场 "是其 "挂单价格"。

我重新做了一下,似乎可以了。谢谢你。
 
你能告诉我如何从MT中找出电脑的当前ip地址吗?
 
Heroix:
你能告诉我如何从MT获得计算机的当前ip地址吗?
WebRequest到http://ipecho.net/plain,并从收到的文件中读取。或WinAPI。
 

策略测试器中,命令MarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) 这种情况发生在,例如,工具是EURUSD,平衡货币是RUR....和其他组合中。我的理解是,平衡货币必须与货币对中第二种货币的名称相同。否则,它将返回零值(在策略测试器中),这使得它无法用所需的组合进行测试。如何解决这个问题?

 
ikatsko:

策略测试器中,命令MarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) 这种情况发生在,例如,工具是EURUSD,平衡货币是RUR ....和其他组合中。我的理解是,平衡货币必须与货币对中第二种货币的名称相同。否则,它将返回零值(在策略测试器中),这使得它无法用所需的组合进行测试。如何解决这个问题?

突出显示的内容不正确!我是用欧元兑美元、英镑兑美元 来计算的。只有在开启时,它才可能在第一个数据之前给出0,这就是为什么在用TICKVALUE计算之前放了一个条件,如果!=0

在测试器中,MarketInfo() 可能不起作用,所以在知道一个tick的大致价格后,我用IsTesting()||IsOptimization()||IsVisualMode()这个条件来设置它。

 

请帮助我创建能同时在两个货币对上进行交易的猫头鹰。

如果在第一对中,变量将是这样的

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);

第二件事将如何进行?

或者按第一个字符打开一个交易的代码将是

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green);

第二个符号的代码将看起来像什么

 
pavlicos:

请帮助我创建一个可以同时交易两个货币对的铲子。

如果在第一对中,变量将是这样的

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);

第二件事将如何进行?

或者按第一个字符打开一个交易的代码将是

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green);

第二个符号的代码将看起来像什么

NULL或Symbol() 表示一个图表对。你可以用字符串mySymbol = Symbol()来区分它们,然后你可以在相应的图表上使用2份EA,并指定不同的魔法符号,以确保!好运!
 
pavlicos:

请帮助我创建一个可以同时交易两个货币对的铲子。

如果在第一对中,变量将是这样的

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Digits);

第二件事将如何进行?

或者按第一个字符打开一个交易的代码将是

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green);

第二个符号的代码将看起来像什么

// в OnTick()
double open_nzdusd_CUR=GetNormalizeOpenPriceBySymbol("NZDUSD",Period(),0);    // цена открытия текущей свечи NZDUSD
double open_audusd_M15=GetNormalizeOpenPriceBySymbol("AUDUSD",PERIOD_M15,1);  // цена открытия прошлой свечи AUDUSD на M15
//+------------------------------------------------------------------+

// функция вне тела OnTick()
//+------------------------------------------------------------------+
double GetNormalizeOpenPriceBySymbol(string sy, int timeframe, int shift) {
   int digits=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
   return(NormalizeDouble(iOpen(sy,timeframe,shift),digits));
}
//+------------------------------------------------------------------+

随着开幕,这里只是概念本身。

string symbol="AUDUSD";
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
int spread=(int)SymbolInfoInteger(symbol,SYMBOL_SPREAD);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
int value=(int)SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
int level=(value==0)?spread*2:value;
//---
double sl_b=(StopLoss==0)?0:NormalizeDouble(fmin(ask-StopLoss*pt,ask-(level+1)*pt),digits);
double tp_b=(TakeProfit==0)?0:NormalizeDouble(fmax(ask+TakeProfit*pt,ask+(level+1)*pt),digits);
ticket_b=OrderSend(symbol,OP_BUY,Lots,ask,3,sl_b,tp_b,"",0,0,clrGreen);
//---
double sl_s=(StopLoss==0)?0:NormalizeDouble(fmax(bid+StopLoss*pt,bid+(level+1)*pt),digits);
double tp_s=(TakeProfit==0)?0:NormalizeDouble(fmin(bid-TakeProfit*pt,bid-(level+1)*pt),digits);
ticket_s=OrderSend(symbol,OP_SELL,Lots,bid,3,sl_s,tp_s,"",0,0,clrRed);

没有检查贸易服务器的返回代码

 
今天,终端中的导航仪突然扩展到了屏幕的全部宽度,遮住了图表!这是为什么?它总是与市场观察的宽度相同!找来找去也找不到如何把它恢复到以前的大小!帮助谁知道如何处理这个新的讨厌鬼!?谢谢!!!。