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

 
borilunad:


只剩下一件事要做,邀请他为我们的账户投资!:))

同意!特别是--投资账户已经准备好了!:-)
 

你好。

我们需要的是以递增方式计算批量的函数。比如说,每增加500来个地段,可能会有什么调整?

所以说,1000块钱--地段0.1

德普1500 - 批量0.15

2000年--地段0.2

请公布该功能。

 

早上好!缺口条件是什么意思?当价格上升35点时,我的止损点在订单下方移动10点,即它与价格的距离为45点。

或者说我们在谈论什么样的差距?

 
T-G:

你好。

你需要这个函数来逐步计算批次。这将是可能的,例如,每增加500手就会调整一次

所以说,1000块钱--地段0.1

德普1500 - 批量0.15

仓库2000--地段0.2

请公布该功能。


没有功能是可能的。

extern double depo = 1000.0;

extern double lot    = 0.1; 

double Lot; 

//--------------------------------

int start()

//--------------------------------

double Equ = AccountEquity();

Lot  = NormalizeDouble(lot*Equ/depo,2);
 
T-G:

你好。

我们需要的是增量计算批次的函数。这将是可能的,例如,每增加500手就会调整一次

所以说,1000块钱--地段0.1

德普1500 - 批量0.15

迪波2000--地段0.2

请公布该功能。

你可以这样做。

//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
//|  Автор : TarasBY, taras_bulba@tut.by                                              |
//+-----------------------------------------------------------------------------------+
//|        Расчитываем размер лота (ступенчато)                                       |
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+
double fGet_Lots (double fd_BeginLot = 0.1,        // начальный размер лота
                  int fi_BeginDepo = 1000,         // начальный размер депозита
                  int fi_IncrementDepo = 500,      // приращение депозита
                  double fd_IncrementLot = 0.05)   // приращение лота
{
    double ld_Balance = AccountBalance();
//----
    if (ld_Balance < fi_BeginDepo + fi_IncrementDepo) return (fd_BeginLot);
    int li_K_Lot = (ld_Balance - fi_BeginDepo) / fi_IncrementDepo;
//----
    return (fd_BeginLot + fd_IncrementLot * li_K_Lot);
}
//IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII+

只是别忘了把这批货归类。

 
在起点上方开出了一张罚单。现在,它只修改了一个订单,但这是另一个错误!否则,该变量是在ifs中声明的。
 
Dimka-novitsek:

早上好!缺口条件是什么意思?当价格上升35点时,我的止损点在订单下方移动10点,即它与价格的距离为45点。

或者说我们在谈论什么样的差距?


早晨,头脑清醒的人!

当我们在发送、接收和执行修改指令时,价格并没有静止不动,是涨是跌,谁也不知道!"。

#include <stderror.mqh>
#include <stdlib.mqh> 
//-------------------

extern int prev = 30;//зазор! Для 5-знака!
extern int sl   = ??;
extern int tp   = ??;
//------------------
int start()
{
//------------------
//----------------------/  Stops & Trailing  \----------------------\\
  for(int i = 0; i < OrdersTotal(); i++)
  {
    if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
    {
      if(OrderSymbol() != Symbol() && OrderMagicNumber() != Magic) continue;
      if(OrderCloseTime() != 0) continue;
      if(OrderType() == OP_BUY)
      {
        if(OrderStopLoss() < OrderOpenPrice() || OrderStopLoss() == 0)
        {
//----------------------
          if(OrderStopLoss() == 0)
          if(Bid < OrderOpenPrice() && Bid > NormalizeDouble(OrderOpenPrice()-sl*Point+prev*Point,Digits))
          if(Bid > NormalizeDouble(OrderOpenPrice()-sl*Point+prev*Point,Digits))
          {
            SL = NormalizeDouble(OrderOpenPrice()-sl*Point,Digits);
            if(Bid < NormalizeDouble(OrderOpenPrice()+tp*Point-prev*Point,Digits))
            {
              TP = NormalizeDouble(OrderOpenPrice()+tp*Point,Digits);
              ModifyOrder(OrderTicket(),OrderOpenPrice(),SL,TP,0,Blue);return(0);
        } } }
//-----------------------
//------------------------/  Modify Order  \------------------------\\
void ModifyOrder(int ticket,double price,double stoploss,double takeprofit,datetime e,color arrow_color)
{
  int ModifyCnt = 0, err;
  while(ModifyCnt < 3)
  {
    if(OrderModify(ticket,NormalizeDouble(price,Digits),NormalizeDouble(stoploss,Digits),
    NormalizeDouble(takeprofit,Digits),0,arrow_color))
    ModifyCnt = 3;
    else err = GetLastError();
    if(err > 0)
    { 
      Print(ModifyCnt," #",ticket," Error modifing order: (", err , ") " , ErrorDescription(err));
      Sleep(3000); RefreshRates(); ModifyCnt++;
} } }

而对萨勒来说,这恰恰是相反的情况。祝你在没有评论的情况下弄清楚它,在我看来这是多余的。

还有,请查一下俄语解释词典,这样你的帖子才更有可读性。

我有时会查一下,因为我已经用不同的语言思考了10多年,没有跟上你们的 "创新"。:))

 
Dimka-novitsek:

下午好!订单修改错误4051。我已经想了一个小时了。看来那里的参数是正确的!!!。简而言之,逐条说明。参数价格是订单的开盘价,OrderOpenPrice(),它是标准的。

我们的止损价比开盘价低10点,而且我们已经记住了这个价格。在打开订单时,我们把它储存在变量tsena中。

我们有两个订单,一个有利润,一个没有。这似乎很清楚。错误是什么?还能是什么呢?

是的,条件似乎很清楚,尽管这并不真正相关。即,价格已经移动了30点,条件起作用了(tsena+30*Point)。

我们设置了一次perenos=true;这些条件似乎真的有效。

我不知道该如何思考这个问题。

实际上穿一次perenos=true;这些条件不需要遵守,因为它没有穿在任何地方。

这一行。

        int tacket = OrderSend (Symbol(), OP_BUY, lot, NormalizeDouble (Ask, Digits), 5, NormalizeDouble (Ask - (35 * Point), Digits), 
            NormalizeDouble (Ask + (45 * Point), Digits), NULL, 450, 0, CLR_NONE);

然后使用(不是在这个tick上)这个变量来修改一个tick=0的订单(这个变量将被重置),说明你不懂基础知识--从局部和全局变量 的概念开始。

在2秒后打开一个刚打开的订单的副本--这是最高的操纵!!!。- 我在哭...:)))

 
谢谢你!!!
 
borilunad:

你可以在没有功能的情况下做到这一点。

在你急于回答之前,你首先应该费心去仔细阅读条件(对方想要什么),然后采取和计算你的代码结果。
首先,对话是关于存款的,这是AccountBalance()。Equ/depo是一个小数,而我们能谈论的是什么样的交错?