FORTS 请帮助 - 页 30

 
demonsn:
谢谢你。添加了你的选项作为平行检查。现在只是一个抓住正确时机的问题。

我百分之百肯定它能发挥作用!

因为你没有正确填写结构(不仅仅是字段,还有值)。

奇怪的是,编译器并没有 "发誓"。

你。

MqlTradeRequest.action = TRADE_ACTION_DEAL;

它需要。

MtRequest.action = TRADE_ACTION_DEAL;
 

但是没有!我信息中的代码不是来自专家顾问,它是一个经过修正的日志片段,其中的调试信息是由专家顾问写的。我的错,我的错)。

专家顾问按照要求填写结构,但检查的结果却不同。它要么正确地计算保证金,要么像例子中那样给出一些胡言乱语。

以下是现场的一个片段

   MqlTradeRequest MtRequest = {0}; 

   switch(OrderType)
   {
      case ORDER_TYPE_BUY:         
         MtRequest.price     = CurrentTick.ask;         
         break;

      case ORDER_TYPE_SELL:         
         MtRequest.price     = CurrentTick.bid;
         break;

      default:
         LogFile.Log(LOG_PRINT,__FUNCTION__," error: Invalid OrderType");
         return(false);
   }

   MtRequest.tp        = 0.0;
   MtRequest.sl        = 0.0;
   MtRequest.action    = TRADE_ACTION_DEAL;
   MtRequest.magic     = 0;
   MtRequest.symbol    = strSymbol;
   MtRequest.volume    = dblLots;
   MtRequest.deviation = Config.Deviation;
   MtRequest.type      = OrderType;
   MtRequest.type_filling = Config.OrdersFillingType;
 

使之成为现实。

   MqlTradeRequest MtRequest = {0}; 
   MqlTradeRequest MtResult = {0}; 

   switch(OrderType)
   {
      case ORDER_TYPE_BUY:         
         MtRequest.price     = CurrentTick.ask;         
         break;

      case ORDER_TYPE_SELL:         
         MtRequest.price     = CurrentTick.bid;
         break;

      default:
         LogFile.Log(LOG_PRINT,__FUNCTION__," error: Invalid OrderType");
         return(false);
   }

   MtRequest.action    = TRADE_ACTION_DEAL;
   MtRequest.magic     = 77777777777777;
   MtRequest.symbol    = strSymbol;
   MtRequest.volume    = dblLots;
   MtRequest.type      = OrderType;
   MtRequest.type_filling = Config.OrdersFillingType;
   MtRequest.type_time = ORDER_TIME_DAY;
 

这里是日志中的另一个时刻。

 MqlTradeRequest structure:
   action: Action Deal
   magic: 0
   order: 0
   symbol: Si-12.15
   volume: 2.00
   price: 63365
   stoplimit: 0
   sl: 0
   tp: 0
   deviation: 50
   type: ORDER_TYPE_SELL
   type_filling: ORDER_FILLING_FOK
   type_time: gtc
   expiration: 1970.01.01 00:00
   comment: (null)

 MqlTradeCheckResult structure:
   retcode: 10019 (There is not enough money to complete the request)
   balance: 133921.71
   equity: 132772.57
   profit: 0.00
   margin: 172148.68
   margin_free: -39376.11
   margin_level: 77.13
   comment: No money

我把同样的结构传递给OrderSend(),一切都完美地打开了!

顺便说一下,建造1194。

出售Si-12.15,2手。1份合同的价格是5090卢布。一个交易应该有5090*2=10180卢布的QR。但是,该函数返回172148.68卢布,等于172148.68/5090=33.82个合同!这就是为什么我们要把它称为 "合同"。

真是一个奇迹...

 
demonsn:

这里是日志中的另一个时刻。

我把同样的结构传递给OrderSend(),一切都完美地打开了!

顺便说一下,建造1194。

出售Si-12.15,2手。1份合同的价格是5090卢布。一个交易应该有5090*2=10180卢布的QR。而该函数返回172148.68卢布,相当于172148.68/5090=33.82份合同!

什么奇迹...

1.我给了你一个如何正确填写结构的样本,而你却无视这个建议。

那你为什么要问?

2.1194版本与目前的服务器不兼容(Renat提到了这一点。 暂时使用1159版本)。

3.我根本不使用OrderCheck()函数,我自己检查资金

//+------------------------------------------------------------------+
//| Expert Check money function                                      |
//+------------------------------------------------------------------+ 
bool CheckMoney( const string a_symbol, const long volume )
{
  if ( volume <= 0 )
  {
    Print( "Check Money: Объём лота указан не правильно!" );
    retutn ( false );
  } 
//---
  double a_go = SymbolInfoDouble( a_symbol, SYMBOL_MARGIN_INITIAL ) * double( volume);
  double free_margin = ( AccountInfoDouble( ACCOUNT_FREEMARGIN ) / 100 ) * 90; //90% от свободных средств
//---  
  if ( a_go <= free_margin )
  {
    return( true );
  }
  Print( "Check Money: Не достаточно средств!" );
  return( false );
}
 
Михаил:

1.我已经给了你一个如何正确填写结构的样本,而你却无视这个建议。

那你为什么要问?

2)Build 1194与目前的服务器不兼容(Renat提到了这一点。 暂时使用Build 1159)。

3.我根本不使用OrderCheck(),我自己检查的手段


1.我根本没有忽视它。我根本就没有忽视它。我已经把你的样本纳入了代码,现在我正在观察它。

2.哦,伙计!我不知道这一点。

3.我也做了同样的事情。而功能几乎完全相同,除了90%(顺便说一句,好主意)。

我提出这个问题是因为我的函数(与你的类似)检查CS并允许开仓,而标准OrderCheck()有时会失败。


这可能是指第2点。

在终端日志中,有很多信息,如。

2015.10.22 21:28:13.966 Ticks   old tick @RTS (tick: 2015.10.22 18:28:21, last: 2015.10.22 18:28:22) 0/0
2015.10.22 21:28:13.966 Ticks   old tick RTS-12.15 (tick: 2015.10.22 18:28:21, last: 2015.10.22 18:28:22) 0/0
2015.10.22 21:28:13.966 Ticks   old tick @RTS (tick: 2015.10.22 18:28:21, last: 2015.10.22 18:28:22) 0/0
2015.10.22 21:28:13.966 Ticks   old tick RTS-12.15 (tick: 2015.10.22 18:28:21, last: 2015.10.22 18:28:22) 0/0
2015.10.22 21:28:13.966 Ticks   old tick @RTS (tick: 2015.10.22 18:28:21, last: 2015.10.22 18:28:22) 0/0
2015.10.22 21:28:13.966 Ticks   old tick RTS-12.15 (tick: 2015.10.22 18:28:21, last: 2015.10.22 18:28:22) 0/0
2015.10.22 21:27:40.995 Ticks   old tick @LKOH (tick: 2015.10.22 18:27:48, last: 2015.10.22 18:27:49) 0/0
2015.10.22 21:27:40.995 Ticks   old tick LKOH-12.15 (tick: 2015.10.22 18:27:48, last: 2015.10.22 18:27:49) 0/0
2015.10.22 21:26:38.952 Ticks   old tick @Si (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick Si-12.15 (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick @Si (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick Si-12.15 (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick @Si (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick Si-12.15 (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick @Si (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick Si-12.15 (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
2015.10.22 21:26:38.952 Ticks   old tick @Si (tick: 2015.10.22 18:26:46, last: 2015.10.22 18:26:47) 0/0
 
demonsn:


1.我为什么要忽视它呢?我根本就没有忽视它。我在代码中加入了你的样本,现在我正在观察。

2.哦,伙计!我不知道这一点。

3.我也做了同样的事情。而功能几乎完全相同,除了90%(顺便说一句,好主意)。

我之所以问这个问题,是因为我的函数(与你的类似)检查CS并允许开仓,而标准的OrderCheck()有时会出现故障。

因此,在FORTS上使用你自己的 - 它更正确 :)
 
Михаил:
因此,在FORTS上使用所有你自己的 - 它更正确 :)

这就是你最终做的事情!在某个地方很想使用别人的代码或库,以节省写 "轮子 "的时间或测试一些想法。

但最后你必须花一个星期的时间来捕捉其他开发者的错误和缺陷。最后,所有的东西都被重写,所以没有其他人的代码的痕迹。

 

你好!

期货胶水出现在测试窗口,这本身是非常令人高兴的,然而,当试图将胶水与合同相匹配时,我发现胶水上根本没有交易--合同上一切正常--有相当多的交易。我检查了四个工具Si,RTS,GAZR,SBRF和01.01.2015 -24.10.2015期间。

 
Andrey Kotrin:

你好!

期货胶水出现在测试窗口,这本身是非常令人高兴的,然而,当试图将胶水与合同相匹配时,我发现胶水上根本没有交易--合同上一切正常--有相当多的交易。我检查了四个工具Si,RTS,GAZR,SBRF和01.01.2015 -24.10.2015期间。

测试仪在期货上不能正常工作。
原因: