Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Привет всем,
Это глупый вопрос по кодированию, и я знаю, что уже где-то это видел, но мне нужна помощь.
Я пишу пользовательский индикатор, и все, что я хочу, чтобы он считывал текущую цену предложения ТОЛЬКО В НАЧАЛЕ НОВОГО бара. Я не могу просто использовать Open[0], потому что каждый раз, когда приходит новый тик, он будет возвращать значение open для текущего бара. Я хочу, чтобы значение возвращалось только один раз, пока не сформируется новый бар.
Я знаю, что упускаю что-то очень простое, но мне трудно разобраться в этом. Не мог бы кто-нибудь мне помочь?
Спасибо,
-wolfe
Привет всем,
Это глупый вопрос по кодированию, и я знаю, что уже где-то это видел, но мне нужна помощь.
Я пишу пользовательский индикатор, и все, что я хочу, чтобы он считывал текущую цену предложения ТОЛЬКО В НАЧАЛЕ НОВОГО бара. Я не могу просто использовать Open[0], потому что каждый раз, когда приходит новый тик, он будет возвращать значение open для текущего бара. Я хочу, чтобы значение возвращалось только один раз, пока не сформируется новый бар.
Я знаю, что упускаю что-то очень простое, но мне трудно разобраться в этом. Не мог бы кто-нибудь мне помочь?
Спасибо,
-wolfeПросто храните текущее время бара (Time[0]) - когда это значение изменится, у вас есть новый бар, так что получите свою цену, сохраните новое значение и повторите...
Просто сохраните текущее время бара (Time[0]) - когда это значение изменится, у вас будет новый бар, так что получите свою цену, сохраните новое значение и повторите...
Спасибо, омлет,
Я должна была подумать об этом, я немного разочарована в себе!
Спасибо за помощь!
Может ли кто-нибудь еще показать мне, что я делаю неправильно в этом коде?
Я хотел бы добавить в него больше таймфреймов, например, таймфрейм Daily, но я не знаю, что не так.
//| #MTF_Hi_Low_Middle.mq4
//| База из spudfibo.Upgrade by Darkkiller
//: Спасибо Младену за помощь в исправлении.
//+------------------------------------------------------------------+
#property indicator_chart_window
extern string note1 = "H4 Higher,Middle,Lower colors";
extern color H4HigherColor = DeepSkyBlue;
extern color H4MiddleColor = Yellow;
extern color H4LowerColor = HotPink;
extern string note2 = "Нарисовать H4 Higher, Lower и Middle?";
extern bool H4HiLow = true;
extern bool H4Mid = true;
extern string note3 = "Цвета D1 Higher, Middle, Lower";
extern color D1HigherColor = DeepSkyBlue;
extern color D1MiddleColor = Yellow;
extern color D1LowerColor = HotPink;
extern string note4 = "Нарисовать D1 Higher, Lower и Middle?";
extern bool D1HiLow = true;
extern bool D1Mid = true;
double HiPrice, LoPrice, Range, D1HiPrice, D1LoPrice, D1Range;
datetime StartTime;
int init()
{
return(0);
}
int deinit()
{
ObjectDelete("H4Higher");
ObjectDelete("H4Lower");
ObjectDelete("H4Middle");
ObjectDelete("D1Higher");
ObjectDelete("D1Lower");
ObjectDelete("D1Middle");
return(0);
}
//+------------------------------------------------------------------+
//| Draw Fibo
//+------------------------------------------------------------------+
int DrawFibo()
{
///////////////////////////////////////////HILO/////
if(H4HiLow)
{
if(ObjectFind("H4Higher") == -1)
ObjectCreate("H4Higher", OBJ_FIBO, 0, StartTime, HiPrice+Range, StartTime, HiPrice);
else
{
ObjectSet("H4Higher",OBJPROP_TIME2, StartTime);
ObjectSet("H4Higher",OBJPROP_TIME1, StartTime);
ObjectSet("H4Higher",OBJPROP_PRICE1,HiPrice+Range);
ObjectSet("H4Higher",OBJPROP_PRICE2,HiPrice);
}
ObjectSet("H4Higher", OBJPROP_LEVELCOLOR, H4HigherColor);
ObjectSet("H4Higher", OBJPROP_FIBOLEVELS,1);
ObjectSet("H4Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Higher", 0, "H4 HIGHER- %$");
ObjectSet("H4Higher", OBJPROP_RAY,true);
ObjectSet("H4Higher", OBJPROP_BACK,true);
ObjectSet("H4Higher", OBJPROP_COLOR,EMPTY);
if(ObjectFind("H4Lower") == -1)
ObjectCreate("H4Lower", OBJ_FIBO, 0, StartTime, LoPrice-Range, StartTime, LoPrice);
else
{
ObjectSet("H4Lower", OBJPROP_TIME2, StartTime);
ObjectSet("H4Lower", OBJPROP_TIME1, StartTime);
ObjectSet("H4Lower", OBJPROP_PRICE1, LoPrice-Range);
ObjectSet("H4Lower", OBJPROP_PRICE2, LoPrice);
}
ObjectSet("H4Lower", OBJPROP_LEVELCOLOR, H4LowerColor);
ObjectSet("H4Lower", OBJPROP_FIBOLEVELS, 1);
ObjectSet("H4Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("H4Lower", 0, "H4 LOWER - %$");
ObjectSet("H4Lower", OBJPROP_RAY, true);
ObjectSet("H4Lower", OBJPROP_BACK, true);
ObjectSet("H4Lower", OBJPROP_COLOR, EMPTY);
}
if(D1HiLow)
{
if(ObjectFind("D1Higher") == -1)
ObjectCreate("D1Higher", OBJ_FIBO, 0, D1StartTime, D1HiPrice+D1Range, D1StartTime, D1HiPrice);
else
{
ObjectSet("D1Higher", OBJPROP_TIME2, D1StartTime);
ObjectSet("D1Higher", OBJPROP_TIME1, D1StartTime);
ObjectSet("D1Higher", OBJPROP_PRICE1, D1HiPrice+D1Range);
ObjectSet("D1Higher", OBJPROP_PRICE2, D1HiPrice);
}
ObjectSet("D1Higher", OBJPROP_LEVELCOLOR, D1HigherColor);
ObjectSet("D1Higher", OBJPROP_FIBOLEVELS,1);
ObjectSet("D1Higher", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Higher", 0, "H4 HIGHER- %$");
ObjectSet("D1Higher", OBJPROP_RAY, true);
ObjectSet("D1Higher", OBJPROP_BACK, true);
ObjectSet("D1Higher", OBJPROP_COLOR, EMPTY);
if(ObjectFind("D1Lower") == -1)
ObjectCreate("D1Lower", OBJ_FIBO, 0, D1StartTime, D1LoPrice-D1Range, D1StartTime, 1LoPrice);
else
{
ObjectSet("D1Lower", OBJPROP_TIME2, D1StartTime);
ObjectSet("D1Lower", OBJPROP_TIME1, D1StartTime);
ObjectSet("D1Lower", OBJPROP_PRICE1, D1LoPrice-D1Range);
ObjectSet("D1Lower", OBJPROP_PRICE2, D1LoPrice);
}
ObjectSet("D1Lower", OBJPROP_LEVELCOLOR, D1LowerColor);
ObjectSet("D1Lower", OBJPROP_FIBOLEVELS,1);
ObjectSet("D1Lower", OBJPROP_FIRSTLEVEL+0,0.0); ObjectSetFiboDescription("D1Lower", 0, "H4 LOWER - %$");
ObjectSet("D1Lower", OBJPROP_RAY, true);
ObjectSet("D1Lower", OBJPROP_BACK, true);
ObjectSet("D1Lower", OBJPROP_COLOR, EMPTY);
}
/////////////////////////////////////////HILO////////
/////////////////////////////////////////MIDDLE////
if(H4Mid)
if(ObjectFind("H4Middle") == -1)
ObjectCreate("H4Middle", OBJ_FIBO, 0, StartTime, HiPrice, StartTime+PERIOD_H4*60, LoPrice);
else
{
ObjectSet("H4Middle", OBJPROP_TIME2, StartTime);
ObjectSet("H4Middle", OBJPROP_TIME1, StartTime+PERIOD_H4*60);
ObjectSet("H4Middle", OBJPROP_PRICE1, HiPrice);
ObjectSet("H4Middle", OBJPROP_PRICE2, LoPrice);
}
ObjectSet("H4Middle", OBJPROP_LEVELCOLOR, H4MiddleColor);
ObjectSet("H4Middle", OBJPROP_FIBOLEVELS,1);
ObjectSet("H4Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("H4Middle", 0, "H4 MIDDLE - %$");
ObjectSet("H4Middle", OBJPROP_RAY, true);
ObjectSet("H4Middle", OBJPROP_BACK, true);
ObjectSet("H4Middle", OBJPROP_COLOR, EMPTY);
}
if(D1Mid)
if(ObjectFind("D1Middle") == -1)
ObjectCreate("D1Middle", OBJ_FIBO, 0, D1StartTime, D1HiPrice, D1StartTime+PERIOD_D1*60, D1LoPrice);
else
{
ObjectSet("D1Middle", OBJPROP_TIME2, D1StartTime);
ObjectSet("D1Middle", OBJPROP_TIME1, D1StartTime+PERIOD_D1*60);
ObjectSet("D1Middle", OBJPROP_PRICE1, D1HiPrice);
ObjectSet("D1Middle", OBJPROP_PRICE2, D1LoPrice);
}
ObjectSet("D1Middle", OBJPROP_LEVELCOLOR, D1MiddleColor);
ObjectSet("D1Middle", OBJPROP_FIBOLEVELS,1);
ObjectSet("D1Middle", OBJPROP_FIRSTLEVEL+0,0.500); ObjectSetFiboDescription("D1Middle", 0, "D1 MIDDLE - %$");
ObjectSet("D1Middle", OBJPROP_RAY, true);
ObjectSet("D1Middle", OBJPROP_BACK, true);
ObjectSet("D1Middle", OBJPROP_COLOR, EMPTY);
}
/////////////////////////////////////////MIDDLE////
//+-----------------------------------------------+
//| Функция запуска индикатора
//+-----------------------------------------------+
int start()
{
int shift = iBarShift(NULL, PERIOD_D1, Time[0]) + 1; // H4
HiPrice = iHigh(NULL, PERIOD_H4, shift);
LoPrice = iLow (NULL, PERIOD_H4, shift);
StartTime = iTime(NULL, PERIOD_H4, shift);
D1HiPrice = iHigh(NULL, PERIOD_D1, shift);
D1LoPrice = iLow (NULL, PERIOD_D1, shift);
D1StartTime = iTime(NULL, PERIOD_D1, shift);
if(TimeDayOfWeek(StartTime) == 0/*воскресенье*/)
{/Добавляем пятничные максимумы и минимумы
HiPrice = MathMax(HiPrice, iHigh(NULL,PERIOD_H4, shift+1));
LoPrice = MathMin(LoPrice, iLow(NULL,PERIOD_H4, shift+1));
D1HiPrice = MathMax(D1HiPrice, iHigh(NULL, PERIOD_D1, shift+1));
D1LoPrice = MathMin(D1LoPrice, iLow(NULL, PERIOD_D1, shift+1));
}
Range = HiPrice - LoPrice;
D1Range = D1HiPrice - D1LoPrice;
DrawFibo();
return(0);
}
//+------------------------------+
Ниже я прикрепляю оригинал для H4 high low mid
Мне нужна помощь, пожалуйста, я пытаюсь использовать дельта-стоп в качестве стоп-лосса
и трейлинг-стопа. Прилагаю советник.
Возможно ли это сделать.
//+------------------------------------------------------------------+
//| MODIFIED BY Avery T. Horton, Jr. aka TheRumpledOne |
//| |
//| |
//|
//
// google search "therumpledone mt4"
//
//+------------------------------------------------------------------+
//| _Fibo_Hi_Low_Middle.mq4
//| База из spudfibo.Upgrade by Darkkiller
//: Спасибо Младену за помощь в исправлении.
//+------------------------------------------------------------------+
#property indicator_chart_window
extern int myChartPeriod = 0 ;
extern string note1 = "Higher,Middle,Lower colors";
extern color HigherColor = DeepSkyBlue;
extern color MiddleColor = Yellow;
extern color LowerColor = HotPink;
extern string note2 = "Нарисовать середину?";
extern bool HiLow = true;
extern bool Mid = true;
double HiPrice, LoPrice, Range;
datetime StartTime;
string tChartPeriod, tHigher, tLower, tMiddle ;
int init()
{
if(myChartPeriod == 0) { myChartPeriod = Period() ; }
tChartPeriod = TimeFrameToString(myChartPeriod) ;
tHigher = tChartPeriod + "H" ;
tLower = tChartPeriod + "L" ;
tMiddle = tChartPeriod + "M" ;
return(0);
}
int deinit()
{
ObjectDelete(tHigher);
ObjectDelete(tLower);
ObjectDelete(tMiddle);
return(0);
}
//+------------------------------------------------------------------+
//| Draw Fibo
//+------------------------------------------------------------------+
int DrawFibo()
{
if(HiLow)
{
if(ObjectFind(tHigher) == -1)
ObjectCreate(tHigher,OBJ_FIBO,0,StartTime,HiPrice+Range,StartTime,HiPrice);
else
{
ObjectSet(tHigher,OBJPROP_TIME2, StartTime);
ObjectSet(tHigher,OBJPROP_TIME1, StartTime);
ObjectSet(tHigher,OBJPROP_PRICE1,HiPrice+Range);
ObjectSet(tHigher,OBJPROP_PRICE2,HiPrice);
}
ObjectSet(tHigher,OBJPROP_LEVELCOLOR,HigherColor);
ObjectSet(tHigher,OBJPROP_FIBOLEVELS,1);
ObjectSet(tHigher,OBJPROP_FIRSTLEVEL+0,0.0);
ObjectSetFiboDescription(tHigher,0,tChartPeriod+" HIGHER- %$");
ObjectSet(tHigher,OBJPROP_RAY,true);
ObjectSet(tHigher,OBJPROP_BACK,true);
ObjectSet(tHigher,OBJPROP_COLOR,EMPTY);
if(ObjectFind(tLower) == -1)
ObjectCreate(tLower,OBJ_FIBO,0,StartTime,LoPrice-Range,StartTime,LoPrice);
else
{
ObjectSet(tLower,OBJPROP_TIME2, StartTime);
ObjectSet(tLower,OBJPROP_TIME1, StartTime);
ObjectSet(tLower,OBJPROP_PRICE1,LoPrice-Range);
ObjectSet(tLower,OBJPROP_PRICE2,LoPrice);
}
ObjectSet(tLower,OBJPROP_LEVELCOLOR,LowerColor);
ObjectSet(tLower,OBJPROP_FIBOLEVELS,1);
ObjectSet(tLower,OBJPROP_FIRSTLEVEL+0,0.0);
ObjectSetFiboDescription(tLower,0,tChartPeriod+" LOWER - %$");
ObjectSet(tLower,OBJPROP_RAY,true);
ObjectSet(tLower,OBJPROP_BACK,true);
ObjectSet(tLower,OBJPROP_COLOR,EMPTY);
}
/////////////////////////////////////////MIDDLE///////////////////////////
if(Mid)
if(ObjectFind(tMiddle) == -1)
ObjectCreate(tMiddle,OBJ_FIBO,0,StartTime,HiPrice,StartTime+myChartPeriod*60,LoPrice);
else
{
ObjectSet(tMiddle,OBJPROP_TIME2, StartTime);
ObjectSet(tMiddle,OBJPROP_TIME1, StartTime+myChartPeriod*60);
ObjectSet(tMiddle,OBJPROP_PRICE1,HiPrice);
ObjectSet(tMiddle,OBJPROP_PRICE2,LoPrice);
}
ObjectSet(tMiddle,OBJPROP_LEVELCOLOR,MiddleColor);
ObjectSet(tMiddle,OBJPROP_FIBOLEVELS,1);
ObjectSet(tMiddle,OBJPROP_FIRSTLEVEL+0,0.500);
ObjectSetFiboDescription(tMiddle,0,tChartPeriod+" MIDDLE - %$");
ObjectSet(tMiddle,OBJPROP_RAY,true);
ObjectSet(tMiddle,OBJPROP_BACK,true);
ObjectSet(tMiddle,OBJPROP_COLOR,EMPTY);
}
//+------------------------------------------------------------------+
//| Функция запуска индикатора
//+------------------------------------------------------------------+
int start()
{
int shift = iBarShift(NULL,myChartPeriod,Time[0]) + 1; // //
HiPrice = iHigh(NULL,myChartPeriod,shift);
LoPrice = iLow (NULL,myChartPeriod,shift);
StartTime = iTime(NULL,myChartPeriod,shift);
if(TimeDayOfWeek(StartTime)==0/*Воскресенье*/)
{/Добавляем пятничные максимумы и минимумы
HiPrice = MathMax(HiPrice,iHigh(NULL,myChartPeriod,shift+1));
LoPrice = MathMin(LoPrice,iLow(NULL,myChartPeriod,shift+1));
}
Range = HiPrice-LoPrice;
DrawFibo();
// Comment("Period_", tChartPeriod ) ;
return(0);
}
//+------------------------------------------------------------------+
string TimeFrameToString(int tf)
{
string tfs;
switch(tf) {
case PERIOD_M1: tfs="M1" ; break;
case PERIOD_M5: tfs="M5" ; break;
case PERIOD_M15: tfs="M15" ; break;
case PERIOD_M30: tfs="M30" ; break;
case PERIOD_H1: tfs="H1" ; break;
case PERIOD_H4: tfs="H4" ; break;
case PERIOD_D1: tfs="D1" ; break;
case PERIOD_W1: tfs="W1" ; break;
case PERIOD_MN1: tfs="MN";
}
return(tfs);
}
Вот как я это сделал.
P.S. почему мои вложения удаляются?
MoveStopOnce
Здравствуйте, пытаюсь заставить этот код MoveStopOnce работать, но сделки на продажу не модифицируются кодом, только на покупку. Что-то не так?
//Buys
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(Bid - OrderOpenPrice() >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
[/code]
[code]
//Sells
//MoveOnce
if(MoveStopOnce && MoveStopWhenPrice > 0) {
if(OrderOpenPrice() - Ask >= Point * MoveStopWhenPrice) {
if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo) {
OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
MoveStopOnce
У меня была такая проблема.
Я думаю, вам нужно добавить:
if (OrderType() == OP_BUY)
И использовать OP_SELL для кода продажи.
Big Be
У меня была такая проблема.
Я думаю, вам нужно добавить:
if (OrderType() == OP_BUY)
И использовать OP_SELL для кода продажи.
Big BeХорошо, я попробую это, когда вернусь домой, но тогда почему это все еще работает с ордерами на покупку?
Спасибо