Ну тогда подскажи как отредактировать код что б не походил на взломанный ели ты всё понимаешь . я пришел на ветку для новичков. И в первый раз на форуме . а мне тут такой красивый ответ .
Да нет, не без стопа. Я ж кусок выложил только. Вот функцию безубытка моя:
В строке ясно видно, что если стоп рассчитаный равен тому, который есть уже, то модификации не будет! Верно же? Значит проверка то изначально и была? Но пока в старте не вбил очередное условие перед функцией модификации ошибка 1 выскакивала постоянно:
Вот почему.... это я и хочу понять. Вроде я всё описал досканально.
У меня функция служит для всех модификаций как установка СЛ и ТП, перевод в Б/У, трал позиций и ордеров с попытками и проверками на ошибки.
А в старте только нужно прописывать выбор позиции, условия и предупредительные меры. Вот функция:
у меня есть советник обыкновенный мартин "Ilan" . хочу чтоб он модифицировал не все открытые ордера . а только начальный и последний ордер по T/P Хочу сделать помощника для себя . сможешь помоги . вот его код
Всем привет.Я беру значения индикаторов в отдельном окне с уже сформерованного бара (т.е. с бара №1),которые считаю один раз на баре №0 на первом его тике.Всё работает быстро и правильно.НО стоит выключить компьютер и через какое-то время снова включить,то индикаторы продолжают исправно работать,а вот их значений на то время,когда был выключен компьютер нет.Просто пустое место.Т.е. есть значения индикаторов ДО выключения и ПОСЛЕ включения компьютера.Но стоит только переключиться туда-обратно с ТФ наТФ - все "пропавшие" значения появляются.Индикаторы стандартные - CCI,AO и т.п.Коды брал с форумов,их прилагаю.Объясните,пожалуйста,где я не прав и чего не понимаю.
Код №1
------
int start()
{
//--------------------------------------------------------------------
Fun_New_Bar(); // Обращение к ф-ии
if (New_Bar==false) // Если бар не новый..
return; // ..то уходим
//--------------------------------------------------------------------
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
for(int i=0;i<limit;i++)
//-------------------------------
{
КОД ИНДИКАТОРА
}
//-------------------------------
return(0);
}
//+------------------------------------------------------------------+
void Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бара
static datetime New_Time=0; // Время текущего бара
New_Bar=false; // Нового бара нет
if(New_Time!=Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
}
}
//--------------------------------------------------------------------
Код №2
------
int start()
{
if (NewBar() == true)
{
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
for(int i=0;i<limit;i++)
//-------------------------------
{
КОД ИНДИКАТОРА
}
//-------------------------------
}
return(0);
}
//+------------------------------------------------------------------+
bool NewBar()
{
static datetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}
Код №3
------
//--- buffers
double ExtMapBuffer1[];
//--- for one bar
datetime Last,New;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
New=Time[0];
if(Last!=New)
{
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
//----
for(int i=0;i<limit;i++)
//-------------------------------
{
КОД ИНДИКАТОРА
}
//-------------------------------
Last=New;
}
//----
return(0);
}
//+------------------------------------------------------------------+
Код №4
------
int start()
{
if(last>=Time[0]) return;
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
//----
for(int i=0;i<limit;i++)
//-------------------------------
{
КОД ИНДИКАТОРА
//-------------------------------
last=Time[0];
}
//----
return(0);
}
//+------------------------------------------------------------------+
у меня есть советник обыкновенный мартин "Ilan" . хочу чтоб он модифицировал не все открытые ордера . а только начальный и последний ордер по T/P Хочу сделать помощника для себя . сможешь помоги . вот его код
Вообще нужно "отсеять" закрытые ордера, не считая магика и символа, конечно. Дальше выбрать начальный и последний ордера для модификации.
У тебя OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - это последний ордер.
А OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - это будет первый ордер.
Ветка эта с вопросами по языку, я ответил тебе на вопрос. Переделкой ботов тут не занимаются. Но выше всё есть для того чтоб это включить в эксперт при малейшем понимание языка. Надеюсь, помог...
у меня есть советник обыкновенный мартин "Ilan" . хочу чтоб он модифицировал не все открытые ордера . а только начальный и последний ордер по T/P Хочу сделать помощника для себя . сможешь помоги . вот его код
Для отлова нужных позиций пользуйтесь "Полезными функциями" от Кима на почти все возможные случаи!
Вообще нужно "отсеять" закрытые ордера, не считая магика и символа, конечно. Дальше выбрать начальный и последний ордера для модификации.
У тебя OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - это последний ордер.
А OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - это будет первый ордер.
Ветка эта с вопросами по языку, я ответил тебе на вопрос. Переделкой ботов тут не занимаются. Но выше всё есть для того чтоб это включить в эксперт при малейшем понимание языка. Надеюсь, помог...
Извините, это не будет работать! Не первый, ни последний!
Всем привет.Я беру значения индикаторов в отдельном окне с уже сформерованного бара (т.е. с бара №1),которые считаю один раз на баре №0 на первом его тике.Всё работает быстро и правильно.НО стоит выключить компьютер и через какое-то время снова включить,то индикаторы продолжают исправно работать,а вот их значений на то время,когда был выключен компьютер нет.Просто пустое место.Т.е. есть значения индикаторов ДО выключения и ПОСЛЕ включения компьютера.Но стоит только переключиться туда-обратно с ТФ наТФ - все "пропавшие" значения появляются.Индикаторы стандартные - CCI,AO и т.п.Коды брал с форумов,их прилагаю.Объясните,пожалуйста,где я не прав и чего не понимаю.
Код №1
------
int start()
{
//--------------------------------------------------------------------
Fun_New_Bar(); // Обращение к ф-ииif (New_Bar==false) // Если бар не новый..return; // ..то уходим//-------------------------------------------------------------------- int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
for(int i=0;i<limit;i++)
//-------------------------------
{
КОД ИНДИКАТОРА
}
//-------------------------------return(0);
}
//+------------------------------------------------------------------+ void Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бараstaticdatetime New_Time=0; // Время текущего бара
New_Bar=false; // Нового бара нетif(New_Time!=Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
}
}
//--------------------------------------------------------------------
Код №2
------
int start()
{
if (NewBar() == true)
{
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
for(int i=0;i<limit;i++)
//-------------------------------
{
КОД ИНДИКАТОРА
}
//-------------------------------
}
return(0);
}
//+------------------------------------------------------------------+ bool NewBar()
{
staticdatetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}
Код №3
------
//--- buffersdouble ExtMapBuffer1[];
//--- for one bardatetime Last,New;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,ExtMapBuffer1);
//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+int start()
{
New=Time[0];
if(Last!=New)
{
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
//----for(int i=0;i<limit;i++)
//-------------------------------
{
Код №4
------
int start()
{
if(last>=Time[0]) return;
int counted_bars=IndicatorCounted(),
limit;
if(counted_bars>0)
counted_bars--;
limit=Bars-counted_bars;
//----for(int i=0;i<limit;i++)
//-------------------------------
{
КОД ИНДИКАТОРА
//-------------------------------
last=Time[0];
}
//----return(0);
}
//+------------------------------------------------------------------+
Пользуйтесь сверху кнопкой SRC для вставки кода! Никто не будет копаться в таком виде. Я Вам вставил. Тоже самое можете сделать в своём посте.
Ну тогда подскажи как отредактировать код что б не походил на взломанный ели ты всё понимаешь . я пришел на ветку для новичков. И в первый раз на форуме . а мне тут такой красивый ответ .
"У гениальных людей гениальный ответ "
Переменным названия придай "читабельные".
Да нет, не без стопа. Я ж кусок выложил только. Вот функцию безубытка моя:
В строке ясно видно, что если стоп рассчитаный равен тому, который есть уже, то модификации не будет! Верно же? Значит проверка то изначально и была? Но пока в старте не вбил очередное условие перед функцией модификации ошибка 1 выскакивала постоянно:
Вот почему.... это я и хочу понять. Вроде я всё описал досканально.У меня функция служит для всех модификаций как установка СЛ и ТП, перевод в Б/У, трал позиций и ордеров с попытками и проверками на ошибки.
А в старте только нужно прописывать выбор позиции, условия и предупредительные меры. Вот функция:
Маленькая да удаленькая!Для новичков в первую очередь:
Спасибо! обязательно прочту .
Мир не без добрых людей.
Переменным названия придай "читабельные".
у меня есть советник обыкновенный мартин "Ilan" . хочу чтоб он модифицировал не все открытые ордера . а только начальный и последний ордер по T/P Хочу сделать помощника для себя . сможешь помоги . вот его код
/* Так и до бана не далеко */Всем привет.Я беру значения индикаторов в отдельном окне с уже сформерованного бара (т.е. с бара №1),которые считаю один раз на баре №0 на первом его тике.Всё работает быстро и правильно.НО стоит выключить компьютер и через какое-то время снова включить,то индикаторы продолжают исправно работать,а вот их значений на то время,когда был выключен компьютер нет.Просто пустое место.Т.е. есть значения индикаторов ДО выключения и ПОСЛЕ включения компьютера.Но стоит только переключиться туда-обратно с ТФ наТФ - все "пропавшие" значения появляются.Индикаторы стандартные - CCI,AO и т.п.Коды брал с форумов,их прилагаю.Объясните,пожалуйста,где я не прав и чего не понимаю.
Код №1 ------ int start() { //-------------------------------------------------------------------- Fun_New_Bar(); // Обращение к ф-ии if (New_Bar==false) // Если бар не новый.. return; // ..то уходим //-------------------------------------------------------------------- int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0;i<limit;i++) //------------------------------- { КОД ИНДИКАТОРА } //------------------------------- return(0); } //+------------------------------------------------------------------+ void Fun_New_Bar() // Ф-ия обнаружения .. { // .. нового бара static datetime New_Time=0; // Время текущего бара New_Bar=false; // Нового бара нет if(New_Time!=Time[0]) // Сравниваем время { New_Time=Time[0]; // Теперь время такое New_Bar=true; // Поймался новый бар } } //-------------------------------------------------------------------- Код №2 ------ int start() { if (NewBar() == true) { int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; for(int i=0;i<limit;i++) //------------------------------- { КОД ИНДИКАТОРА } //------------------------------- } return(0); } //+------------------------------------------------------------------+ bool NewBar() { static datetime lastbar = 0; datetime curbar = Time[0]; if(lastbar!=curbar) { lastbar=curbar; return (true); } else { return(false); } } Код №3 ------ //--- buffers double ExtMapBuffer1[]; //--- for one bar datetime Last,New; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,ExtMapBuffer1); //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { New=Time[0]; if(Last!=New) { int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- for(int i=0;i<limit;i++) //------------------------------- { КОД ИНДИКАТОРА } //------------------------------- Last=New; } //---- return(0); } //+------------------------------------------------------------------+ Код №4 ------ int start() { if(last>=Time[0]) return; int counted_bars=IndicatorCounted(), limit; if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; //---- for(int i=0;i<limit;i++) //------------------------------- { КОД ИНДИКАТОРА //------------------------------- last=Time[0]; } //---- return(0); } //+------------------------------------------------------------------+У меня функция служит для всех модификаций как установка СЛ и ТП, перевод в Б/У, трал позиций и ордеров с попытками и проверками на ошибки.
А в старте только нужно прописывать выбор позиции, условия и предупредительные меры. Вот функция:
Маленькая да удаленькая!Ничего себе :) Благодарю. Нужно "осмотреть" обязательно!
у меня есть советник обыкновенный мартин "Ilan" . хочу чтоб он модифицировал не все открытые ордера . а только начальный и последний ордер по T/P Хочу сделать помощника для себя . сможешь помоги . вот его код
Вообще нужно "отсеять" закрытые ордера, не считая магика и символа, конечно. Дальше выбрать начальный и последний ордера для модификации.
У тебя OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - это последний ордер.
А OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - это будет первый ордер.
Ветка эта с вопросами по языку, я ответил тебе на вопрос. Переделкой ботов тут не занимаются. Но выше всё есть для того чтоб это включить в эксперт при малейшем понимание языка. Надеюсь, помог...
у меня есть советник обыкновенный мартин "Ilan" . хочу чтоб он модифицировал не все открытые ордера . а только начальный и последний ордер по T/P Хочу сделать помощника для себя . сможешь помоги . вот его код
Для отлова нужных позиций пользуйтесь "Полезными функциями" от Кима на почти все возможные случаи!
https://www.mql5.com/ru/forum/131859
Вообще нужно "отсеять" закрытые ордера, не считая магика и символа, конечно. Дальше выбрать начальный и последний ордера для модификации.
У тебя OrderSelect(g_pos_300, SELECT_BY_POS, MODE_TRADES); - это последний ордер.
А OrderSelect(0, SELECT_BY_POS, MODE_TRADES); - это будет первый ордер.
Ветка эта с вопросами по языку, я ответил тебе на вопрос. Переделкой ботов тут не занимаются. Но выше всё есть для того чтоб это включить в эксперт при малейшем понимание языка. Надеюсь, помог...
Всем привет.Я беру значения индикаторов в отдельном окне с уже сформерованного бара (т.е. с бара №1),которые считаю один раз на баре №0 на первом его тике.Всё работает быстро и правильно.НО стоит выключить компьютер и через какое-то время снова включить,то индикаторы продолжают исправно работать,а вот их значений на то время,когда был выключен компьютер нет.Просто пустое место.Т.е. есть значения индикаторов ДО выключения и ПОСЛЕ включения компьютера.Но стоит только переключиться туда-обратно с ТФ наТФ - все "пропавшие" значения появляются.Индикаторы стандартные - CCI,AO и т.п.Коды брал с форумов,их прилагаю.Объясните,пожалуйста,где я не прав и чего не понимаю.
Код №1