
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
dasio Он уже перебирает все часы текущего дня. Я поместил iClose() и iOpen() просто как пример вызова из таймфрейма, отличного от 1 часа. Если вы хотите получить доступ к дню, отличному от текущего, то замените "0" в datetime startTime=iTime(NULL,PERIOD_D1,0); на любой день, за который вы хотите получить данные.
Спасибо.
Возможно, мне нужно учиться.
Я не понимаю, как я могу сделать отдельный расчет для свечей 00:00 - 01:00 - 02:00 и т.д.
Извините
Проблемы с сигналом
Mladen
Спасибо, я посмотрел внимательно....Im все еще экспериментируя код.Я буду уведомлять, когда через.
dasio
Эта часть
устанавливает i на сдвиг первой часовой свечи в указанный день (именно поэтому было добавлено datetime startTime=iTime(NULL,PERIOD_D1,0);- чтобы узнать время начала дня), после чего перебирает значения каждого часового бара, пока день не останется неизменным (например, в пятницу перебирает не 24 раза, а 22 или 23, в зависимости от брокера).
Если вам нужно нащупать какой-то массив, который должен быть сделан немного по-другому, сообщите мне, если это была ваша идея).
Спасибо.
Возможно, мне нужно учиться.
Я не понимаю, как я могу сделать отдельный расчет для 00:00 свечи - 01:00 - 02:00 и т.д.
ИзвинитеКак сделать экспертную остановку?
Здравствуйте кодеры,
Как сделать несколько дополнительных строк кодирования, чтобы эксперт останавливался после выигрышной сделки?
Пипсы в мешке, тогда сделайте стоп эксперта...
Большое спасибо
Tomcat98
dasio
Эта часть
устанавливает i на сдвиг первой часовой свечи в указанный день (именно поэтому было добавлено datetime startTime=iTime(NULL,PERIOD_D1,0);- чтобы узнать время начала дня), после чего он будет перебирать значения каждого часового бара, пока день не останется неизменным (например, в пятницу он будет перебирать не 24 раза, а 22 или 23, в зависимости от вашего брокера).
Если вам нужно почувствовать некоторый массив, который должен быть сделан немного по-другому, позвольте мне сейчас, если это была ваша идея)Спасибо,
Я понимаю немного больше.
Однако мне это нужно для примера.
Я должен связать с переменными что-то вроде этого:
(свеча 00:00 ; Переменная = Close+High
свеча 01:00 ; Переменная1 = Close+Open
свеча 02:00 ; Переменная2 = high+low;
И так далее для всех часовых свечей дня.
Итак, переменные определены как двойные.
После этого я должен произвести некоторые математические вычисления с переменной и связать результат с буфером (это не проблема).
Проблема для меня заключается в ассоциации переменных.....
Еще одна проблема... Я пытаюсь изучить программирование и иногда (только иногда?) мне нужна помощь.
Если у меня есть ea, которая размещает два отложенных ордера, как я могу закодировать, если я хочу, чтобы при открытии одного отложенного ордера другой отложенный ордер был удален?
Спасибо
Вы должны использовать 2 цикла:
Сначала вы должны подсчитать ордера, чтобы выяснить, стал ли какой-либо из отложенных ордеров "обычным" ордером (поэтому вы должны сделать обычный подсчет ордеров, имеющих тип OP_BUY или OP_SELL, и, если хотите, подсчитать остальные ордера тоже).
Если есть открытые ордера, то нужно снова выполнить цикл и удалить все ордера, которые не являются ордерами типа OP_BUY или OP_SELL.
Код может быть примерно таким:
int pending =0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
opened++;
else pending++;
}
if (opened>0 && pending>0)
{
for(i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)
OrderDelete(OrderTicket());
}
}Другая проблема... Я пытаюсь изучить программирование и иногда (только иногда?) мне нужна помощь.
Если у меня есть ea, которая размещает два отложенных ордера, как я могу закодировать, чтобы при открытии одного отложенного ордера другой отложенный ордер удалялся?
СпасибоЗакрывать все позиции на продажу или все позиции на покупку только (при достижении целевой прибыли)
Привет всем. Я новичок в FX и советниках. Я пытался найти советника для "закрыть все продажи" или "закрыть все покупки" при достижении цели, но не смог найти. Я нашел только закрытие всех продаж или всех покупок без "HIT TARGET или PROFIT". Возможно ли, чтобы кто-нибудь помог мне создать 1 советника со следующими функциями:-.
1)Закрывать все продажи, если прибыль достигла цели X.
2)Закрывать все покупки, если прибыль достигла цели X.
3)Включить трейлинг стоп (если возможно, если нет, то без проблем).
4) Не закрывать, если эквити или уровень маржи меньше X %, если закрыть все покупки или закрыть все продажи (если возможно, если нет проблем).
Примечание:
Если нет 4, то это довольно сложно закодировать, поэтому просто выберите 1, 2 и 3 в одном советнике.
Если нет 4 и 3 сложно, поэтому просто нет 1 и 2 в одном советнике.
Если все еще сложно, просто создайте №1 и №2 отдельно.
Буду очень признателен, если кто-нибудь сможет предоставить мне вышеуказанную информацию.
Заранее спасибо
Привет всем. Я новичок в FX и советниках. Я пытался найти советника для "закрыть все продажи" или "закрыть все покупки" при достижении цели, но не смог найти. Я нашел только закрытие всех продаж или всех покупок без "HIT TARGET или PROFIT". Возможно ли, чтобы кто-нибудь помог мне создать советника с перечисленными ниже функциями:-.
1)Закройте все продажи, если прибыль достигла цели X.
2)Закройте все покупки, если прибыль достигла цели X.
3) Включите трейлинг-стоп (если возможно, если нет - нет проблем).
4) Не закрывать, если эквити или уровень маржи меньше X %, если закрыть все покупки или закрыть все продажи (если возможно, если нет проблем).
Примечание:
Если нет 4, то это довольно сложно закодировать, поэтому просто выберите 1, 2 и 3 в одном советнике.
Если нет 4 и 3 сложно, поэтому просто нет 1 и 2 в одном советнике.
Если все еще сложно, просто создайте 1 и 2 отдельно.
Буду очень признателен, если кто-нибудь сможет предоставить мне вышеуказанную информацию.
Заранее спасибоПривет Pipsmonitor,
Возможно, вы найдете что-то здесь, на этой странице https://www.mql5.com/en/forum/181179 также сделал поиск goggle на панели заголовка форума использовал закрыт на прибыль нашел некоторые там вы можете быть в состоянии использовать, также может попробовать поиск трейлинг Eas, знаю о Ema трейлинг и BBand стоп трейлинг Ea.
Здравствуйте,
Я пытаюсь объединить эти два кода, но у меня с этим проблемы.
Мне нужно, чтобы при исполнении одного отложенного ордера другой отменялся.
Спасибо за вашу отзывчивость
int pending =0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=Magic) continue;
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
opened++;
else pending++;
}
if (opened>0 && pending>0)
{
for(i=OrdersTotal()-1; i>=0; i--)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() !=Symbol()) continue;
if(OrderMagicNumber()!=Magic) continue;
if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)
OrderDelete(OrderTicket());
}
} [/PHP]
[PHP] extern int Magic = 68415;
extern int Orario_Inizio = 0;
extern int Orario_Fine = 6;
extern int Buffer = 0;
extern double Lotti = 0.1;
extern int TakeProfit = 10;
extern int StopLoss = 50;
double Massimo;
double Minimo;
int BarCount;
int BarStart;
int BarShift;
double MinLot;
double LotSize;
int i;
int ticket;
string Status;
string BuyStatus1;
string SellStatus1;
double Range;
string CommentoRange;
double pipMultiplier = 1;
int init()
{
}
int start()
{
if (Digits==3 || Digits==5)
{pipMultiplier = 10;}
else {pipMultiplier = 1; }
double TakeProfit1 = TakeProfit*Point*pipMultiplier;
double StopLoss1 = StopLoss*Point*pipMultiplier;
double Buffer1 = Buffer*Point*pipMultiplier;
double StopLossPrice = NormalizeDouble(StopLoss1,Digits);
double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);
double BufferPrice = NormalizeDouble(Buffer1,Digits);
//CALCOLA LE BARRE DEL RANGE
if(Orario_Inizio>Orario_Fine)
{
BarCount=24+Orario_Fine-Orario_Inizio;
}
if(Orario_Inizio<Orario_Fine)
{
BarCount=Orario_Fine-Orario_Inizio;
}
//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE
if(Hour()>=Orario_Fine)
{
BarStart=Hour()-Orario_Fine;
BarShift=BarStart+BarCount;
Minimo=iLow(NULL,PERIOD_H1,BarStart);
Massimo=0;
for(i=BarStart;i<=BarShift;i++)
{
Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));
Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));
Range=(Massimo-Minimo)/Point;
}
}
else
{
Massimo=0;
Minimo=0;
return(0);
}
//CONTROLLA SE E' L'ORARIO PER POTER TRADARE
if(Hour()==Orario_Fine && OrdersTotal()<2)
{
//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY
double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);
//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL
double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);
if (ticket != -1)
return(0);
}
}