Как кодировать? - страница 231

 

Отлично, спасибо!

 

блин, массивы и функции, не моя чашка чая.

 

Помощь для эксперта

Я хочу сделать следующее:

Использовать фреймы M15 и открывать в течение этого интервала два ордера максимум, сравнивая текущую цену с предыдущим M15 close(close[1]). Однако я не знаю, как написать код для этого, поскольку я хочу, чтобы эта процедура происходила на каждом следующем M15 фрейме. Как сохранить нужные переменные для подсчета 2 ордеров в максимуме каждый M15, так как функция start всегда выполняет сама себя?

Спасибо

 

Нужна помощь со скриптом открытия отложенных ордеров.

Я знаю, что здесь есть много скриптов, которые открывают и закрывают ордера, но я не могу найти такой, который бы открывал отложенные ордера.

Мне нужно 2 скрипта, 1 Sellstop и 1 Buystop.

Я бы хотел, чтобы Buystop открывал ордер Buystop на 15 пунктов выше дневного Pivot, а SellStop - на 15 пунктов ниже дневного Pivot.

Я поиграл с этим и получил приведенный ниже код для SellStop, но я не кодер, и он не работает. Наверное, я что-то упустил.

Кто-нибудь может помочь мне с этим, пожалуйста.

PS. не обращайте внимания, у меня получилось. Мне пришлось изменить цену предложения на PVTGreen. Я получал ошибку 130...

Теперь все работает...

Хорошо, еще одна проблема, может кто-нибудь подскажет мне, как изменить время истечения срока действия с 24 часов позже на 22:00 того же дня.

//+------------------------------------------------------------------+

//| script "send pending order with expiration data" |

//+------------------------------------------------------------------+

int start()

{

int ticket,expiration;

double point;

double PVTYellow = iCustom(NULL, 0, "pivot_alllevels", 0, 0, 0);

double PVTBlue = iCustom(NULL, 0, "pivot_alllevels", 0, 1, 0);

double PVTGreen = iCustom(NULL, 0, "pivot_alllevels", 0, 2, 0);

double PVTRed = iCustom(NULL, 0, "pivot_alllevels", 0, 3, 0);

double PVTMagenta = iCustom(NULL, 0, "pivot_alllevels", 0, 4, 0);

//----

point=MarketInfo(Symbol(),MODE_POINT);

expiration=TimeCurrent()+PERIOD_D1*60;

//----

while(true)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP, 0.10, PVTGreen-15*Point, 3, PVTGreen+20*Point, PVTGreen-20*Point, 0,0,expiration,Red);

if(ticket<=0) Print("Error = ",GetLastError());

else { Print("ticket = ",ticket); break; }

//---- 10 seconds wait

Sleep(10000);

}

//----

return(0);

}

//+------------------------------------------------------------------+
 

Чтобы сделать истечение срока действия 22:00, можно сделать следующее...

int iHour = TimeHour(TimeCurrent());

int iMinute = TimeMinute(TimeCurrent());

int iDiff = 22%iHour;

datetime dtExpiryDate = (TimeCurrent()+(iDiff*60*60))-(iMinute*60);

Print(TimeToStr(dtExpiryDate));

Здесь нет проверки ошибок, так что если вы думаете, что вам это понадобится, обязательно добавьте это.

Lux

 

Символы для наблюдения за рынком

Привет всем,

Я хотел спросить, есть ли способ захватить все символы, доступные в market watch для мониторинга, вместо того, чтобы вручную кормить советника?

Другими словами, я хочу, чтобы мой советник перебирал все символы, которые доступны в окне просмотра рынка, и отслеживал их по определенным критериям.

Любая помощь будет высоко оценена.

 

Помогите мне - Баланс счета воскресенье

Здравствуйте,

Я пытаюсь со вчерашнего дня подправить кэш моей всей недели, так как баланс счета в воскресенье (успешное открытие рынка) показывает.

Мне нужно Чтобы привести к запуску советника Баланс счета в воскресенье на успешном открытии рынка в Equity Manager правильно.

double usedacc = 0;

...

if (usedacc == 0 | | DayOfWeek () == 0) usedacc = Account Balance ();

...

Просто не работает

Может кто-нибудь сможет мне помочь, как я могу.

Извините за плохой английский

 

пожалуйста, удалите это сообщение - thx

 

как получить данные из индикатора

Привет всем,

Мне нужно для советника значения FIBO100 и FIBO0 из индикатора. Как мне их получить?

Спасибо

derumuro

Файлы:
 

Как его получить?

Я столкнулся с такой же проблемой.

Скотт

"Межскриптовая" коммуникация (или "межиндикаторная" коммуникация) в MQL проходит исключительно через буферы. Вот этот код :

trendset = iCustom(NULL,0, "VGA HISTOGRAM~",0,0);

Означает, что вы хотите получить значение для текущего бара из первого (публичного) буфера индикатора "VGA HISTOGRAM~". Вы не можете получить значения переменных, объявленных в другом индикаторе (и не важно, объявлены ли они как внешние) Вы можете попробовать использовать глобальные переменные, но глобальные переменные сложны в работе и дают больше шансов совершить ошибку, чем правильно работать с ними, или вы можете написать DLL (metatrader использует только один экземпляр DLL на график, независимо от параметров, поэтому вы можете сделать своего рода "семафор", который будет хранить и возвращать значения в зависимости от идентификаторов любого рода - это обеспечит взаимодействие между mql-кодами и позволит избежать неправильного чтения переменных (глобальные переменные, например, легко перепутать, и вы можете читать переменные из совершенно другого графика, даже не подозревая об этом)).

с уважением

Mladen

На самом деле я сделал обходной путь для этого, которым я поделюсь с вами.

В вашем индикаторе сделайте новую функцию, чтобы все не запуталось.

void PASSINFO() {

int trendcondtemp; //измените это на желаемое имя, оно не имеет значения, оставьте его, если вам лень

if (Close[1] > Open[2] && Volume[1] < Volume[2]) trendcondtemp=1; //bullish - это просто устанавливает значение переменной, используйте свой код

if (Close[1] < Open[2] && Volume[1] < Volume[2]) trendcondtemp=2; //bearish - то же самое, другой запах

if (Volume[1] > Volume[2])trendcondtemp=3; //хреново происходит - мех

if (Symbol()=="USDCHF") GlobalVariableSet("TRENDSETUSDCHF ",trendcondtemp);

if (Symbol()=="GBPUSD") GlobalVariableSet("TRENDSETGBPUSD",trendcondtemp);

if (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

если (Symbol()=="USDJPY") GlobalVariableSet("TRENDSETUSDJPY",trendcondtemp);

if (Symbol()=="USDCAD") GlobalVariableSet("TRENDSETUSDCAD",trendcondtemp);

if (Symbol()=="NZDUSD") GlobalVariableSet("TRENDSETNZDUSD",trendcondtemp);

if (Symbol()=="AUDUSD") GlobalVariableSet("TRENDSETAUDUSD",trendcondtemp);

if (Symbol()=="AUDNZD") GlobalVariableSet("TRENDSETAUDNZD",trendcondtemp);

if (Symbol()=="AUDCAD") GlobalVariableSet("TRENDSETAUDCAD",trendcondtemp);

если (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

if (Symbol()=="AUDCHF") GlobalVariableSet("TRENDSETAUDCHF",trendcondtemp);

если (Symbol()=="AUDJPY") GlobalVariableSet("TRENDSETAUDJPY",trendcondtemp);

если (Symbol()=="CHFJPY") GlobalVariableSet("TRENDSETCHFJPY",trendcondtemp);

если (Symbol()=="EURGBP") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp);

if (Symbol()=="EURAUD") GlobalVariableSet("TRENDSETEURAUD",trendcondtemp);

если (Symbol()=="EURCHF") GlobalVariableSet("TRENDSETEURCHF",trendcondtemp);

если (Symbol()=="EURJPY") GlobalVariableSet("TRENDSETEURJPY",trendcondtemp);

если (Symbol()=="EURNZD") GlobalVariableSet("TRENDSETEURNZD",trendcondtemp);

если (Symbol()=="GBPCHF") GlobalVariableSet("TRENDSETGBPCHF",trendcondtemp);

если (Symbol()=="GBPAUD") GlobalVariableSet("TRENDSETGBPAUD",trendcondtemp);

если (Symbol()=="GBPCAD") GlobalVariableSet("TRENDSETGBPCAD",trendcondtemp);

если (Symbol()=="GBPJPY") GlobalVariableSet("TRENDSETGBPJPY",trendcondtemp);

if (Symbol()=="NZDJPY") GlobalVariableSet("TRENDSETNZDJPY",trendcondtemp);

//добавляем нефть/золото/шекели/что угодно, чем вы торгуете после этого я покрыл все, что делает мой брокер

}

Теперь, поскольку тренд зависит от валюты, нет шансов, что он пересечется с другой валютой и забьет все значения. Теперь вам нужно поместить это в вашу функцию start / whatever до вызова значения.

int trendset;

if (Symbol()=="USDCHF") trendset= GlobalVariableGet("TRENDSETUSDCHF");

if (Symbol()=="GBPUSD") trendset= GlobalVariableGet("TRENDSETGBPUSD");

if (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

если (Symbol()=="USDJPY") trendset= GlobalVariableGet("TRENDSETUSDJPY");

if (Symbol()=="USDCAD") trendset= GlobalVariableGet("TRENDSETUSDCAD");

if (Symbol()=="NZDUSD") trendset= GlobalVariableGet("TRENDSETNZDUSD");

if (Symbol()=="AUDUSD") trendset= GlobalVariableGet("TRENDSETAUDUSD");

if (Symbol()=="AUDNZD") trendset= GlobalVariableGet("TRENDSETAUDNZD");

if (Symbol()=="AUDCAD") trendset= GlobalVariableGet("TRENDSETAUDCAD");

if (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

if (Symbol()=="AUDCHF") trendset= GlobalVariableGet("TRENDSETAUDCHF");

if (Symbol()=="AUDJPY") trendset= GlobalVariableGet("TRENDSETAUDJPY");

если (Symbol()=="CHFJPY") trendset= GlobalVariableGet("TRENDSETCHFJPY");

если (Symbol()=="EURGBP") trendset= GlobalVariableGet("TRENDSETEURGBP");

if (Symbol()=="EURAUD") trendset= GlobalVariableGet("TRENDSETEURAUD");

if (Symbol()=="EURCHF") trendset= GlobalVariableGet("TRENDSETEURCHF");

if (Symbol()=="EURJPY") trendset= GlobalVariableGet("TRENDSETEURJPY");

if (Symbol()=="EURNZD") trendset= GlobalVariableGet("TRENDSETEURNZD");

если (Symbol()=="GBPCHF") trendset= GlobalVariableGet("TRENDSETGBPCHF");

if (Symbol()=="GBPAUD") trendset= GlobalVariableGet("TRENDSETGBPAUD");

if (Symbol()=="GBPCAD") trendset= GlobalVariableGet("TRENDSETGBPCAD");

если (Symbol()=="GBPJPY") trendset= GlobalVariableGet("TRENDSETGBPJPY");

если (Symbol()=="NZDJPY") trendset= GlobalVariableGet("TRENDSETNZDJPY");

Обратите внимание!!! (вы, вероятно, уже понимаете это), но вы должны иметь индикатор, работающий на вашей валюте, на которой работает ea, чтобы значения изменились, иначе вы просто получите старую переменную, которая хранится неделями в mt4.

Причина обращения: