检查--我做错了什么? - 页 2

 
Natalya Smirnova #:

由于我是为二元期权写的,所以我做的事情有点不同。


这可能是正确的?

问题是这样的
在终端中,1个订单有2行


而对于专家顾问下的订单,利润==0

 
Natalya Smirnova #:

我认为这就是问题所在
在终端中,1个订单有2行。


而在专家顾问所下的订单上,利润==0

你在哪里找到一个低于零的价格--你如何显示截图?

在这张截图中你看不到它

 
Alexey Viktorov #:

你已经得到了关于整个算法的建议,我不想干涉,甚至没有看你的代码和同样的建议......但是这个

引起了我的注意。所以我的问题是:使用开关运算符不是更容易、更易读吗?

我认为这更容易阅读和理解。也许它的工作速度也更快一点。
也许用数组volume[n]来代替函数?
虽然,如果你要为每一行代码付费,你最好让它这样:))
 
Nikolai Semko #:
也许用一个数组volume[n]来代替一个函数?
尽管如果你为每一行代码付费,最好还是保持这种方式 :))

也许是这样......我同意。

 
Renat Akhtyamov #:

你在哪里发现价格低于零的,给我看一下截图?

这张截图上没有这样的东西。


我试图获得OrderProfit()--它给出了0

这里是确认发现的利润-0.01,因为它从那条附加线出来了

 
Alexey Viktorov #:

也许是这样......我同意。

我没有得到报酬,这是为了我自己和自我发展。工作之余,做一个圣杯任务很有意思
 

我不明白负面的价格,它仍然不存在。

像这样计算总利润(摘录)。

你需要的东西被强调

   for(i=0;i<OrdersHistoryTotal();i++)

   {

      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))

      {

         if(OrderType()==ORDER_TYPE_BALANCE && OrderCloseTime()>startDate)Withdrawal=Withdrawal+OrderProfit()+OrderCommission()+OrderSwap();

         if((OrderType()==ORDER_TYPE_BUY || OrderType()==ORDER_TYPE_SELL))

         {

            if(OrderCloseTime()>iTime(Symbol(),PERIOD_D1,0))hystCurrDay=hystCurrDay+OrderProfit()+OrderCommission()+OrderSwap();

            if(OrderCloseTime()<iTime(Symbol(),PERIOD_D1,0) && OrderCloseTime()>iTime(Symbol(),PERIOD_D1,1))hystPrevDay=hystPrevDay+OrderProfit()+OrderCommission()+OrderSwap();

         }

      }

   }



 
Natalya Smirnova #:
我没有得到报酬,这是为了我自己和自我发展。工作之余,做个圣杯搜索很有意思

不要管我。只有我和尼古拉在一起,他们有一个小聚会......

你的问题的实质是:由于外汇经纪公司的OrderProfit()不提供任何实际价值,你必须将正/负关闭的订单定义为订单的收盘价和开盘价之间的差异。你已经被告知这一点

关于交易、自动交易系统和策略测试的论坛

检查我做错了什么?

Renat Akhtyamov, 2021.12.21 09:27

不明白这背后的逻辑

怎么会

bool profit = false;
         if(OrderClosePrice() > 0)
            profit = true;

         bool loss = false;
         if(OrderClosePrice() < 0)
            loss = true;

订单的收盘价 怎么可能小于零?

如果收盘价高于开盘价,"买入 "订单将处于加仓状态。

这里是买入加码的条件(不包括佣金和互换)。

OrderClosePrice() > OrderOpenPrice()
如果是相反的情况,那就是减分。

 
Natalya Smirnova #:
我自己和我的自我发展没有得到那么多报酬。工作之余,去寻找圣杯是很有趣的。

是的,纳塔利娅--那只是 "当你为一行代码获得报酬 "系列中的一个备忘录。

这就是程序员的幽默感。


在你的情况下,你不需要一个函数。

double SelectVolume(int n)

你只需要形成变量Volume1 ...Volume10变量最初应该形成一个数组volume[10]
,然后通过索引n引用其元素volume[n]。
不要担心--几乎每个程序员都经历过这种情况。
最主要的是,你真的喜欢编程。我可以感觉到它。
那么你就会走得很远。

 
我同意。这些节目真的很有吸引力,而且是非常长期的!!!。
并非每个人最后都会有一个冰雹....。
原因: