помогите мне пожалуйста [решено] - страница 3

 
mrluck1:
Да, сэр, всего 1 сделка, но ваш пример был великолепен, он будет очень полезен в качестве основы для создания новых востоков.
bool trade_made = false;

void OnTick()
  {
   double up   = iIchimoku(NULL,5,9,26,52,3,0),
          down = iIchimoku(NULL,5,9,26,52,4,0);
   static bool was_above = true;
   bool is_above = (MathMax(up,down)< Bid);
   if(!trade_made && !was_above && is_above && open_orders()<1)
     {
      if(OrderSend(NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point)<0)
        {
         printf("OrderSend() failed. Error code: %i",GetLastError());    
        }
      else t rade_made=true;
     }
   was_above = is_above;
  }

int open_orders()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=0; i--) // good habit to count down
     {
      if(!OrderSelect(i,SELECT_BY_POS))  continue;  // select the order
      if(OrderSymbol() != _Symbol)       continue;  // optional check for same symbol
      if(OrderMagicNumber()!= magic_no)  continue;  // optional check for magic number
      if(OrderType() < 2)                count++;   // 0 == OP_BUY and 1 == OP_SELL
     }
   return(count);
  }
 
mrluck1:

Марко: Я попробовал ваше новое обновление, но оно не делает никакой торговли, я ввел все так, как вы написали в последнем сообщении, только удалил второй int, в тикете. Но первая сделка не совершается в тестере стратегий, что теперь делать?

Он должен разместить сделку, потому что:


     if (MathMax (up,down) < Bid )

    ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);


//+------------------------------------------------------------------+
//|                                                    One Order.mq4 |
//|      Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Marco vd Heijden, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

bool order=0;int ticket;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(order==0)
     {
      double up=iIchimoku(NULL,5,9,26,52,3,0);
      double down=iIchimoku(NULL,5,9,26,52,4,0);
        {
         if(MathMax(up,down)<Bid)
           {
            ticket=OrderSend(NULL,0,0.01,Ask,3,Bid-150*Point,Bid+100*Point);
              {
               if(ticket>-1)
                 {
                  order=1;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+

Я только что попробовал, и он разместил ОДИН ордер...


 

Спасибо большое,honest_knave, это именно то, что мне было нужно, я буду вечно в долгу,

спасибо и вам, мистер Марко, за вашу помощь.

 
mrluck1:

Спасибо большое,honest_knave, это именно то, что мне было нужно, я буду вечно в долгу,

Не за что. Но вы согласны, что ответ редко бывает таким простым, как кажется? Что может объяснить некоторые комментарии здесьCODE Help( Urgent).
 
honest_knave:
Пожалуйста. Но согласны ли вы, что ответ редко бывает таким простым, как кажется? Что может объяснить некоторые комментарии здесьCODE Help( Urgent).
Я уже удалил этот комментарий, простой советник - это проблема для меня, я ничего не знаю, чтобы что-то сказать.
 
mrluck1:
Я уже удалил этот комментарий, простой советник - это проблема для меня, я ничего не знаю, чтобы что-то сказать.

Эй, мы все еще учимся. И твое сердце было в правильном месте.

Я рад, что ты решил свою проблему.

Есть много способов сделать одно и то же... Марко и я решали эту проблему с разных сторон, и оба они одинаково правильные.

Удачи

 

Да, г-нMarco vd Heijden, это работает точно так же, как и у honest_knave, я попробовал снова, основываясь на последнем коде, который вы предложили, работает отлично, я приму оба ответа, и использую ваш для этого скрипта, так как он более похож на оригинальную идею.

Спасибо за помощь

 
Я полагаю, что из кода, который вы разместили, советник не сможет снова открыть ордер. Если только вы не удалите советника с графика и не подключите его снова (для инициализации). Я полагаю, это и было целью?
 
Hairi Baba:
Я полагаю, что из кода, который вы опубликовали, советник не сможет снова открыть ордер. Если только вы не удалите советника с графика и не подключите его снова (для инициализации). Я полагаю, это и было целью?

Теперь будем надеяться, что он выберет правильное направление :)

Я где-то читал о парне, который забыл, что у него все еще есть открытая позиция, и угадайте, что произошло... $$$$$

 
Hairi Baba:
Я полагаю, что из кода, который вы разместили, советник не сможет снова открыть ордер. Если только вы не удалите советника с графика и не подключите его снова (для инициализации). Я полагаю, это и было целью?
Да, это то, чего хочет ОП.