请指导我有关传播的问题 - 页 3

 
EA starts 
---> Does nothing till there is 0 or 1 order 
----> Makes a 'call open sound' when 2nd order gets triggered 
----> Closes both orders at X amount of pure profit [after considering spread] and makes a 'call close sound' ]

of course, call open and call close sound files can be any small wave files.. easily available on mt4 itself. .. 
I think these things can be achieved in the above EA that I had posted by changing a few things !
哇......你想要的东西基本上是很容易编码的。
 
deysmacro:
哇......你想要的东西基本上是很容易编码的。


你能指导我吗?我已经从网上找到了这个

//+------------------------------------------------------------------+
//|                    CloseTrades_After_Account_Profit_Reached.mq4  |
//|                                     Copyright © 2007, Tradinator |
//|                                          tradinator.fx@gmail.com |
//+------------------------------------------------------------------+

#property copyright "Copyright © 2007, Tradinator"
#property link      "tradinator.fx@gmail.com"


                                       
extern double My_Money_Profit_Target=100;     //The amount of money profit at which you want to close ALL open trades.
extern string Profit_Target= "Enter above To Close all OPEN trades when amount of profit is Reached in Account and not per OPEN trade! ";
                                          
int Slippage=5;
int i;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start()
{
if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       int type   = OrderType();
               
       bool result = false;
              
       switch(type)
          {
          //Close opened long positions
          case OP_BUY  : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),Slippage,Pink);
                         break;
               
          //Close opened short positions
          case OP_SELL : result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),Slippage,Pink);
                          
          }
          
       if(result == false)
          {
            Sleep(0);
          }  
       }
      Print ("Account Profit Reached. All Open Trades Have Been Closed");
      return(0);
   }  
   
   Comment("Balance: ",AccountBalance(),", Account Equity: ",AccountEquity(),", Account Profit: ",AccountProfit(),
           "\nMy Account Profit Target: ",My_Money_Profit_Target);
   
  return(0);
}

现在,我已经说得很清楚了,我不是程序员,但我认为我需要在"int start() " 下面加一行 ,计算已执行[非挂起]订单的数量,然后只有当它们是2个时才进入下一个代码,并执行其余的代码 如果AccountProfit()>= My_Money_Profit_Target)...等等

对吗? 如何在MQL中说这一行?

int start()
{
 {
   if (Ordertotal()<=1)  ------>   See , something here which says only execute lower code if total executed orders are two else dont go to lower code.. I know that syntax is totally busted, trying to push the concept                                                                                                             
                                   as a weak non coder mind ;( .. so till total open orders are less than or equal to 1 means not 2, the code below that line wont come into play !         

      if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
 
thrdel:

是的deVries

一切都失败了,如果你这么说,我不应该这么做,但由于我真的没有在你的回答中看到什么帮助.....

你应该明白,这些代码并不是用于出售给挑剔的客户的商业性EA,对吗?我们正在努力解决一些问题,如果你不想帮忙,至少应该不去管它。

你真的认为,如果我改变几次时间框架.....,什么?滑点会是3000000?在我的MT4中显然不会。如果你不相信我,可以自己做个测试。

我的测试表明,当你改变时间框架时,EA会经历脱机/启动周期,由于提到的代码在OnInit中,滑点每次都会在30点左右。

任何人都可以看到,改变时间框架不会使滑点达到一百万,如果这是你所建议的。

不,这不是一张假照片,它是真实的,你可以检查改变每个时间框架的时间。

希望能有所帮助。


这个失败.....

对于很多交易来说,PRC并不是合适的价格。

你对这个问题有什么看法...

读取对OnInit()和OnDeinit()的双重调用

新版本有问题

(双重OnInit()的问题似乎在Build 628中得到了解决,但仍然没有这个版本 )

 
deVries:

这失败了 .....

对于很多交易来说,PRC不是一个合适的价格。

你有什么要说的吗......?

嘿嘿,现在你们两个已经深入到了兔子洞里,正在讨论一些让鸟儿飞过我头顶的东西!xD ......你能不能看看我添加的那条蹩脚的代码线?xD ......你能不能看看我加的那个蹩脚的代码行? =D

 
tatyawinchu:

嘿嘿,现在你们两个已经深入到兔子洞里,正在讨论一些让鸟儿飞过我头顶的东西!xD ......你们能不能看看我加的那个蹩脚的代码行?xD ......你能不能看一下我加的那行蹩脚的代码?


正确的卖出价和买入价是图表符号的价格,如果交易是其他符号,收盘价是错误的。

       if(result == false)
          {
            Sleep(0);
          }  

这将产生什么影响?

它是否会失败? 订单类型是待定交易吗?

或者是平仓失败

在这种情况下,你需要得到最后的错误 GetLastError()知道原因。

 
tatyawinchu:

EA开始 ---> 什么都不做,直到有0个或1个订单 ----> 当第二个订单被触发时,发出 "看涨开盘的声音" ----> 在X量的纯利润下关闭两个订单[在考虑点差后] 并发出 "看涨收盘的声音" ]

当然,看涨开盘和看涨收盘的声音文件可以是任何小的波形文件......在MT4上很容易找到。我认为这些东西可以通过改变一些东西在我发布的上述EA中实现!嘿嘿,帮帮我吧=D

嗨,tatyawinchu

我相信你没有很好地理解我发布的EA的作用。让我一步一步地告诉你,你可以决定是否可以用它来达到你的目的。

基于账户的止损是为了保护任何想使用它的人,我从不建议在市场上没有至少一个紧急止损,如果你的账户里有10 000美元,你想冒所有的风险,只要把止损限额设置为10 000。

你的决定。

现在,回到代码中,就像1、2、3一样简单。

1.如果你阅读OnTick函数中的代码--那是在每个tick上执行的部分--你会看到它做的第一件事是:CountMyOrders。希望你能看到这一点。接下来,如果myOrders<1意味着还没有订单,检查账户资产,记住它,然后就这样。

不做其他事情。下一步,如果仍然没有订单,就继续等待。做一个EA很无聊,不是吗?

2.当一个订单被放置时,myOrders<1不再是真的,所以在下一个tick,它将跳到下一行,并计算市场中的订单或订单的利润。

3.接下来,它将比较所有订单的利润之和和目标利润。

很简单,不是吗。如果利润达到目标值,下一行会说:退出所有订单。并会在屏幕上弹出一个提示(有声音),告诉你订单已经达到了目标!这时,你就会发现你的订单已经达到了目标。

这还不算太坏,是吗?

我忘了说了,如果市场对你不利,并且权益损失达到预设水平,它将把你带出市场以保护剩余的资本。

这是我能给你的最好帮助。

如果你需要更多的帮助,这可能是那些做比这更多定制代码的人的工作。

希望能有所帮助。

干杯

 
thrdel:

嗨,tatyawinchu

我相信你没有很好地理解所发布的EA的作用。让我一步一步地告诉你,你可以决定是否可以使用它来达到你的目的。

基于账户的止损是为了保护任何想使用它的人,我从不建议在市场上没有至少一个紧急止损,如果你的账户里有10 000美元,你想冒所有的风险,只要把止损限额设置为10 000。

你的决定。

现在,回到代码中,就像1、2、3一样简单。

1.如果你阅读OnTick函数中的代码--那是在每个tick上执行的部分--你会看到它做的第一件事是:CountMyOrders。希望你能看到这一点。接下来,如果myOrders<1意味着还没有订单,检查账户资产,记住它,然后就这样。

不做其他事情。下一步,如果仍然没有订单,就继续等待。做一个EA很无聊,不是吗?

2.当一个订单被放置时,myOrders<1不再是真的,所以在下一个tick,它将跳到下一行,并计算市场中的订单或订单的利润。

3.接下来,它将比较所有订单的利润之和和目标利润。

很简单,不是吗。如果利润达到目标值,下一行会说:退出所有订单。并会在屏幕上弹出一个警报(有声音),告诉你订单已经达到了目标!这时,你就会发现,你的订单已经达到了目标。

这不是很糟糕,是吗?

我忘了说了,如果市场对你不利,并且权益损失达到预设水平,它将把你带出市场以保护剩余的资本。

这是我能给你的最好帮助。

如果你需要更多的帮助,这可能是那些做比这更多定制代码的人的工作。

希望能有所帮助。

欢呼声


嗯......看起来我们正在渐行渐远。

我的具体要求如下:-

第1步 EA开始。

第2步 EA检查当前账户 的利润,以便它知道从哪个起点开始计算。

第3步 EA检查运行中的未结订单[非挂单]。

第四步,如果没有运行中的订单或只有一个运行中的订单,EA不做任何操作。

第5步,当第二个订单被触发时,EA会发出声音,这个第二个订单将是在其他的交易对上。

第6步 EA在考虑到SPREAD后以X利润关闭两个订单,并发出声音....,这里的两个订单应该都是未平仓的订单,不需要删除挂单。

EA不需要...任何形式的SL或TP设置。

最好的是,EA应该在两个以上的订单上工作,但如果太难的话就不需要。

[虽然从逻辑上讲,我觉得这并不困难,而是非常容易,因为EA激活关闭所有未结订单,如果它们超过1个......那就是2个或更多自动关闭!所以这可能已经被EA覆盖了......如果错了请纠正我!]

 
deysmacro:
哇......你想要的东西基本上是很容易编码的。

你很有趣。微妙但有趣。
 
thrdel:

你很有趣。微妙但有趣。

如果我可以添加一个IF循环,然后粘贴下面的其余代码,开始循环呢?

IF条件应该检查 OrdersTotal=>2,这样控制权就会被传递给所有未平仓的订单,在点差后以X的利润关闭?

如何告诉EA在某些情况下做不到?

假设我做了以下事情

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+


int start() 
{
if (OrdersTotal()=>2)                                     // Can this work? Can a function be directly called like this?
} 
{
 if (AccountProfit()>= My_Money_Profit_Target)
   {
    for(i=OrdersTotal()-1;i>=0;i--)
       {
       OrderSelect(i, SELECT_BY_POS);
       int type   = OrderType();
               
       bool result = false;
              
       switch(type)
Ok, cant seem to get out of this box yet ! hehe need to know forum stuff more ! but, as you can see above, if that "if (OrdersTotal()=>2)" is valid, it would directly solve my problems .. because the rest of
the stuff would be executed only if the total running market orders are 2 ! =D ..  and some forum guru please release this text from this src prison box ! ;)
 
但你必须记住。EA只关闭运行中的交易。你必须自己打开交易。