Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Мишель,
Большое спасибо, что нашли время посмотреть код и ответить. Иногда все, что нужно, это еще одна пара глаз! Вы были правы, что ошибка заключалась в делении на 0 с пропущенным столбиком. Теперь все улажено.
BW
Объяснение кода - Ind-Fractals-1
кто-нибудь может объяснить, как определяются фракталы в этом(https://c.mql5.com/forextsd/forum/165/ind-fractals-1.mq4) индикаторе. я заметил, что, как и обычные фракталы, они имеют задержку между точкой разворота и фактическим построением фрактала, но я хотел бы знать, как долго длится эта задержка. я думаю, что 15-минутный фрактал рисуется через 40-50 1-минутных баров после установления точки. я также заметил, что цвет фракталов меняется (хотя их положение не меняется), поскольку некоторые 15-минутные фракталы становятся часовыми фракталами.
как закодировать следующее?
Привет всем,
Я новичок в metatrader 4. Я знаю не так много о кодировании в mt4.
Я хочу, чтобы metatrader выдавал алерт, когда
1. 30-периодная простая скользящая средняя поднимается выше 60-периодной простой скользящей средней.
2. 30-периодная простая скользящая средняя падает ниже 60-периодной простой скользящей средней.
Кто-нибудь может помочь мне опубликовать код здесь?
большое спасибо
Привет всем,
Я новичок в metatrader 4. Я мало что знаю о кодировании в mt4.
Я хочу, чтобы metatrader выдавал алерт, когда
1. 30-периодная простая скользящая средняя поднимается выше 60-периодной простой скользящей средней.
2. 30-периодная простая скользящая средняя падает ниже 60-периодной простой скользящей средней.
Кто-нибудь может помочь мне опубликовать код здесь?
большое спасибоПочему бы не использовать это? Введите MA и выберите 0 для простой, это даст вам линии и стрелки.
большое спасибо~~
Почему бы не использовать это? Вставьте свою MA и выберите 0 для простого, это даст вам линии и стрелки.
Привет, я хотел бы, чтобы сигнал появлялся, когда 2 чистая свеча была закончена после пересечения. заранее спасибо.
пожалуйста, помогите исправить мой код
Прежде всего, я считаю, что этот код очень удобен, он понравится многим. Поэтому, пожалуйста, помогите мне улучшить его.
На самом деле, этот код уже отлично работает. Но я просто устал от простого всплывающего окна Alert, в котором не показан символ. Поэтому я изменил/добавил несколько строк, чтобы попробовать, вот эта часть %%%%%%%%%.
Я не знаю почему, печатайте, комментируйте... неважно, ничего не происходит.
И, что странно, вы можете видеть в части "----alert----", я изменил предупреждение UPBREAK на что-то другое, но оно все еще показывает "UP BREAK". ---- Я уверен, что каждый раз, когда я переписываю код, я компилирую его, удаляю из графика и загружаю снова.
Есть идеи?
#property indicator_chart_window
#import "usr32.dll" // %%%%%%%%%%
int MessageBoxA(int hWnd,string lpText,string lpCaption,int uType); //%%%%%%%%%%
#import //%%%%%%%%%%
int PrevAlertTime = 0;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
int start()
{
int i=ObjectsTotal();
int redtotal=0,j,typ1;
double price1,price2,up,down;
color col;
string name1,name2,nameup,namedown,warn1,sym=Symbol();
warn1=sym + "Break Up"; //%%%%%%%%%%
Print(sym); //%%%%%%%%%%%
//----make sure exactly 2 red lines on chart---------------------
for (j=0; j<i; j++)
if(ObjectGet(ObjectName(j),OBJPROP_COLOR)==255 && ObjectType(ObjectName(j))==OBJ_TREND)
{ redtotal++;
if (redtotal==1) name1=ObjectName(j);
if (redtotal==2) name2=ObjectName(j);
}
if (redtotal==2)
{
if(ObjectFind("remind")==0) ObjectDelete("remind");
}
else
{
ObjectCreate("remind",OBJ_LABEL,0,0,0);
ObjectSet("remind", OBJPROP_XDISTANCE,0);
ObjectSet("remind", OBJPROP_YDISTANCE,20);
ObjectSetText("remind", "Keep exactly 2 red lines on chart" ,16,"Times New Roman",Blue);
return(0); // question here: what should I use, 0 or -1 ?
}
//--------decide which line is up / down ---------------------
price1=NormalizeDouble(ObjectGetValueByShift(name1,1),
MarketInfo(Symbol(),MODE_DIGITS));
price2=NormalizeDouble(ObjectGetValueByShift(name2,1),
MarketInfo(Symbol(),MODE_DIGITS));
if (price2>=price1)
{
nameup=name2; namedown=name1;
up=price2; down=price1;
}
else
{ nameup=name1; namedown=name2;
up=price1; down=price2;
}
//-------- alert ----------------------------------------------
if (TimeCurrent() - PrevAlertTime > Period()*60/3)
{
if (Close[1]up)
{ MessageBoxA(NULL,"tupole","11111",0); // %%%%%%%%%%
Print(Symbol()); // %%%%%%%%%%
PrevAlertTime = TimeCurrent();
}
if (Close[1]>=down && Close[0]<down)
{ Alert("DOWN BREAK",Symbol());
PrevAlertTime = TimeCurrent();
}
}
return(0);
}
Я нашел, в чем дело:
Обычно я создаю или редактирую код с помощью: "Metaeditor---file---new/open...".
Но я только что обнаружил: после присоединения к графику, а затем некоторых изменений в этом коде, наконец, больше изменений не влияет на график больше (конечно, я скомпилировал !)----- но "Metaeditor--navigator--files---my code..." делают ! Это странно, это должен быть один и тот же код!
Помогите с кодом следа
{
if (byPips >=5)
{
for (int i = 0; i < OrdersTotal(); i++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
if (OrderType() == OP_BUY) {
//if (Bid > (OrderValue(cnt,VAL_OPENPRICE) + TrailingStop * Point)) {
// OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet);
// break;
//}
if (Bid - OrderOpenPrice() > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
if (OrderStopLoss() < Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
} else if (OrderType() == OP_SELL) {
if (OrderOpenPrice() - Ask > byPips * MarketInfo(OrderSymbol(), MODE_POINT)) {
if ((OrderStopLoss() > Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) ||
(OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
}
}
}
} // proc TrailIt()Это код. Как видно из вложения на одном ордере, он изменяет стоп, но изменяет его в неправильном направлении, и я не могу это исправить. Буду очень признателен за помощь в поиске решения!!!
Попробуйте это. Похоже, что вы, возможно, пытаетесь изменить ордера с разными символами. Если это так, то Bid и Ask будут извлекать рыночные данные только из символа окна графика, к которому прикреплен советник. Использование MarketData(symbol, MODE_BID) - это способ получить соответствующие данные.
{
if (byPips >=5)
{
for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
double bid=MarketInfo(OrderSymbol(),MODE_BID);
double ask=MarketInfo(OrderSymbol(),MODE_ASK);
if ( OrderSymbol()==Symbol() && ( (OrderMagicNumber() == uniqueGridMagic) || (OrderComment() == GridName)) ) // only look if mygrid and symbol...
{
if (OrderType() == OP_BUY)
{
if (bid - OrderOpenPrice() >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))
{
if (OrderStopLoss() < bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT)|| (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(), bid - byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
else if (OrderType() == OP_SELL)
{
if (OrderOpenPrice() - ask >= byPips * MarketInfo(OrderSymbol(), MODE_POINT))
{
if ((OrderStopLoss() > ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT)) || (OrderStopLoss() == 0))
{
OrderModify(OrderTicket(), OrderOpenPrice(),ask + byPips * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(), Red);
}
}
}
}
}
}
return;
}