пользуюсь сигналом Flive, но иногда хочется закрыть ордер самостоятельно. Но, как только я его закрываю, он вновь открывается. Можно решить это как-нибудь?
Artur116: пользуюсь сигналом Flive, но иногда хочется закрыть ордер самостоятельно. Но, как только я его закрываю, он вновь открывается. Можно решить это как-нибудь?
Nesradamus: Я так предполагал, что экстремумов месячных всего два - min и max... ну да бог с ними, сначала длинный код получался, поэтому помощи просил... но озарило, вместился в четыре строки.
Это если на месячной свече. Конечно там будет - iHigh(Symbol(), PERIOD_MN1, BarOfMonth); и iLow(Symbol(), PERIOD_MN1, BarOfMonth);
А если нужно в течении месяца найти экстремумы цены на дневном графике - то их будет на минимум 28 барах точно больше одного ;)
как сделать чтобы прямоугольник рисовался наперед а не назад к примеру на пять баров вперед по указаной цене ......и не перерисовывался
В имени "Имя_объекта" должно присутствовать время его построения. Например "Имя_объекта"+TimeToString(Time[0]); Тогда каждый прямоугольник будет иметь собственное имя.
Чтобы задать смещение вправо от нулевого бара, нужно ко времени Time[0] прибавить нужное количество баров, например Time[0]+Period()*5*60 (прибавили пять баров)
#property strict#include <Indicators\Trend.mqh>
bool ind;
CiMA MA;
externint pos=1;
externint sl=40;
externint tp=70;
datetime time;
datetime time2;
bool trade=false;
bool trade2=false;
int a,b;
intOnInit()
{
//---
MA.Create(Symbol(),PERIOD_CURRENT,10,6,MODE_EMA,PRICE_CLOSE);//создал машку//---return(INIT_SUCCEEDED);
}
voidOnTick()
{
//---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))
returntrue;
elsereturnfalse;
}
//+------------------------------------------------------------------+//| возвращает истину если закрытие бара с указаной позицией ниже МА//+------------------------------------------------------------------+bool sell(int pos)
{
if(iClose(Symbol(),0,pos)<MA.Main(1))
returntrue;
elsereturnfalse;
}
ВСЕ ФУНКЦИИ кроме двох условий на покупку и продажу взяты из ветки кима......подскажите пожалуйста где ошибся...нужно чтобы одна сделка по одному пересечению открывалась
Никак не могу понять в чём дело? В тестере всё работает, а на реале и на демо, при попытке открытия ордера выдаёт "Возникла ошибка 0". GetLastError() возвращает "0", а это отсутствие ошибки. Что это значит?
Leo59: Никак не могу понять в чём дело? В тестере всё работает, а на реале и на демо, при попытке открытия ордера выдаёт "Возникла ошибка 0". GetLastError() возвращает "0", а это отсутствие ошибки. Что это значит?
в коде значит так прописано, если напрягает - исправьте.
пользуюсь сигналом Flive, но иногда хочется закрыть ордер самостоятельно. Но, как только я его закрываю, он вновь открывается. Можно решить это как-нибудь?
снять галочку "Синхронизировать позиции..."
Я так предполагал, что экстремумов месячных всего два - min и max... ну да бог с ними, сначала длинный код получался, поэтому помощи просил... но озарило, вместился в четыре строки.
Это если на месячной свече. Конечно там будет - iHigh(Symbol(), PERIOD_MN1, BarOfMonth); и iLow(Symbol(), PERIOD_MN1, BarOfMonth);
А если нужно в течении месяца найти экстремумы цены на дневном графике - то их будет на минимум 28 барах точно больше одного ;)
ещо вопрос по поводу функции
как сделать чтобы прямоугольник рисовался наперед а не назад к примеру на пять баров вперед по указаной цене ......и не перерисовывался
В имени "Имя_объекта" должно присутствовать время его построения. Например "Имя_объекта"+TimeToString(Time[0]); Тогда каждый прямоугольник будет иметь собственное имя.
Чтобы задать смещение вправо от нулевого бара, нужно ко времени Time[0] прибавить нужное количество баров, например Time[0]+Period()*5*60 (прибавили пять баров)
Существует ли в mql4 возможность скрывать некоторый код из представления, свернуть область кода таким образом, чтобы оно помещалось под плюс (+)?
как например в шарпе #region #endregion, код помещенный между этими директивами будет возможно сворачивать.
Никак не могу понять в чём дело? В тестере всё работает, а на реале и на демо, при попытке открытия ордера выдаёт "Возникла ошибка 0". GetLastError() возвращает "0", а это отсутствие ошибки. Что это значит?
в коде значит так прописано, если напрягает - исправьте.
в коде значит так прописано, если напрягает - исправьте.
Что исправить, если ордер не открывается?