Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 506

 
ктонибудь напишите структуру лимитного ордера
 
пользуюсь сигналом Flive, но иногда хочется закрыть ордер самостоятельно. Но, как только я его закрываю, он вновь открывается. Можно решить это как-нибудь?
 
Artur116:
пользуюсь сигналом Flive, но иногда хочется закрыть ордер самостоятельно. Но, как только я его закрываю, он вновь открывается. Можно решить это как-нибудь?

снять галочку "Синхронизировать позиции..."
 
Nesradamus:
Я так предполагал, что экстремумов месячных всего два - min и max... ну да бог с ними, сначала длинный код получался, поэтому помощи просил... но озарило, вместился в четыре строки.

Это если на месячной свече. Конечно там будет - iHigh(Symbol(), PERIOD_MN1, BarOfMonth); и iLow(Symbol(), PERIOD_MN1, BarOfMonth);

А если нужно в течении месяца найти экстремумы цены на дневном графике - то их будет на минимум 28 барах точно больше одного ;)

 
Zver4991:

ещо вопрос по поводу функции

как сделать чтобы прямоугольник рисовался наперед а не назад к примеру на пять баров вперед по указаной цене ......и не перерисовывался

В имени "Имя_объекта" должно присутствовать время его построения. Например "Имя_объекта"+TimeToString(Time[0]); Тогда каждый прямоугольник будет иметь собственное имя.

Чтобы задать смещение вправо от нулевого бара, нужно ко времени Time[0] прибавить нужное количество баров, например Time[0]+Period()*5*60 (прибавили пять баров)

datetime t1=Time[10], t2=Time[0]+Period()*60*5;
SetRectangle(clrBlue,"Прямоугольник"+TimeToString(Time[0]),t1,Low[10],t2,High[0]);
 
#property strict
#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
extern int pos=1;
extern int sl=40;
extern int tp=70;
datetime time;
datetime time2;
bool trade=false;
bool trade2=false;
int a,b;
int OnInit()
  {
//---
   MA.Create(Symbol(),PERIOD_CURRENT,10,6,MODE_EMA,PRICE_CLOSE);//создал машку
//---
   return(INIT_SUCCEEDED);
   
  }
void OnTick()
  {
//---
  if(IsNewBar()==true)//если новый бар включаемся
     {
     if(buy(pos)==true)//если цена выше МА продолжаем
     {
      if(!ExistPositions(Symbol(),-1,-1,0))//если нету открых ордеров продолжаем
        {

         if(GetTypeLastClosePos(Symbol(),-1)!=OP_BUY)//если тип последней закрытой позиции был не на покупку то тогда только покупаем таким образом я пред остерегаюсь от повторных входов в покупку если цена 
//все ещо выше МА...но почему то не работает открываются и дальше сделки на покупку если ордер закрылся выше МА....ХОТЯ НЕ ДОЛЖО ТАК КАК Я ОГРАНИЧИЛ ПО ТИПУ ПОЗИЦИИ ПОСЛЕДНЮЮ СДЕЛКУ И ОНИ ДОЛЖНЫ ТОЛЬКО 
//       ЧЕРЕДОВАТСЯ И УЖ НИ КАК НЕ ПОВТОРЯТСЯ ПО НЕСКОЛЬКО РАЗ ПОДРЯД
           {
            trade=true;
           }
  if(trade==true)
        {
         OpenPosition(Symbol(),OP_BUY,0.1,Ask-sl*Point,Ask+tp*Point);
         trade=false;
        }
}
        }
    
     
if(sell(pos)==true)
{
   if(!ExistPositions(Symbol(),-1,-1,0))
     {

      if(GetTypeLastClosePos(Symbol(),-1)!=OP_SELL)
        {
         trade2=true;
        }

      if(trade2==true)
        {
         OpenPosition(Symbol(),OP_SELL,0.1,Bid+sl*Point,Bid-tp*Point);
         trade=false;
      }
  }}
 }
  }

//возвращает истину если закрытие бара  с указаной позицией выше МА

bool buy(int pos)
  {
   if(iClose(Symbol(),0,pos)>MA.Main(1))
      return true;
   else
      return false;
  }
//+------------------------------------------------------------------+
//| возвращает истину если закрытие бара  с указаной позицией ниже МА
//+------------------------------------------------------------------+
bool sell(int pos)
  {
   if(iClose(Symbol(),0,pos)<MA.Main(1))
      return true;
   else return false;
  }
ВСЕ ФУНКЦИИ кроме двох условий на покупку и продажу взяты из ветки кима......подскажите пожалуйста где ошибся...нужно чтобы одна сделка по одному пересечению открывалась
 

Существует ли в mql4 возможность скрывать некоторый код из представления, свернуть область кода таким образом, чтобы оно помещалось под плюс (+)?

как например в шарпе #region #endregion, код помещенный между этими директивами будет возможно сворачивать.

 
Никак не могу понять в чём дело? В тестере всё работает, а на реале и на демо, при попытке открытия ордера выдаёт "Возникла ошибка 0". GetLastError() возвращает "0", а это отсутствие ошибки. Что это значит?
 
Leo59:
Никак не могу понять в чём дело? В тестере всё работает, а на реале и на демо, при попытке открытия ордера выдаёт "Возникла ошибка 0". GetLastError() возвращает "0", а это отсутствие ошибки. Что это значит?

в коде значит так прописано, если напрягает - исправьте.
 
evillive:

в коде значит так прописано, если напрягает - исправьте.

Что исправить, если ордер не открывается?
Причина обращения: