Про массивы слышали?
Vinin:
Про массивы слышали?
Слышал. Но пока не могу понять, как пользоваться. Если подскажете, хотя бы примерно, буду благодарен.
Про массивы слышали?
agluhenko:
Слышал. Но пока не могу понять, как пользоваться. Если подскажете, хотя бы примерно, буду благодарен.
Слышал. Но пока не могу понять, как пользоваться. Если подскажете, хотя бы примерно, буду благодарен.
Вариант работы
for (int k=0;k<2;k++) { for (int i=0;i<5;i++) { for (int j=0;j<3;i++) { CCI[0][i][j]=iCCI(instr[i],TIMEFRAME[k],period,price,j); } if (CCI[k][i][0]>CCI[k][i][1] && CCI[k][i][1]>CCI[k][i][2]) rek[k][i]=1; if (CCI[k][i][0]<CCI[k][i][1] && CCI[k][i][1]<CCI[k][i][2]) rek[k][i]=-1; summ_rek[k]+=rek[k][i]; } }
Заменяет около 50 строк кода. Меньше ошибок легче читается, но работает чуть-чуть медленней. Массивы еще инициализировать надо
Vinin:
Спасибо. Вот о чем-то таком я думал.... но это совсем высший пилотаж!
Вариант работы
Заменяет около 50 строк кода. Меньше ошибок легче читается, но работает чуть-чуть медленней. Массивы еще инициализировать надо
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Друзья, посмотрите, пожалуйста! Я немного разбираюсь в программировании, подскажите, может как-то можно это оптимизировать?
//+------------------------------------------------------------------+
//| мульти.mq4 |
//| Александр Глухенко |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Александр Глухенко"
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
//--- input parameters
extern double LotsNumber= 0.01;//объем сделки
extern int Slipp = 5;//проскальзывание
extern int period = 21; //период усреднения
extern int price = 5; //расчет средней цены для индикатора
extern int TIMEFRAMES = 0; //таймфрейм м.б 0,1,5,15,30,60,240,1440,10080,43200
extern int TIMEFRAMES_1 = 5; //таймфрейм 2 не равен таймфрейм 1
extern string instr_1="EURUSD"; //певая пара
extern int Magic_1 = 1;
extern string instr_2="EURGBP"; //вторая пара
extern int Magic_2 = 2;
extern string instr_3="EURAUD"; //третья пара
extern int Magic_3 = 3;
extern string instr_4="EURCHF"; //четвертая пара
extern int Magic_4 = 4;
extern string instr_5="EURJPY"; //пятая пара
extern int Magic_5 = 5;
extern int zona = 4; //параметр для покупки/продажи
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int k1,k2,k3,k4,k5,i,m;
int start()
{
//---
//---1--
double CCI_0_1=iCCI(instr_1,TIMEFRAMES,period,price,0);
double CCI_0_2=iCCI(instr_2,TIMEFRAMES,period,price,0);
double CCI_0_3=iCCI(instr_3,TIMEFRAMES,period,price,0);
double CCI_0_4=iCCI(instr_4,TIMEFRAMES,period,price,0);
double CCI_0_5=iCCI(instr_5,TIMEFRAMES,period,price,0);
//---2--
double CCI_1_1=iCCI(instr_1,TIMEFRAMES,period,price,1);
double CCI_1_2=iCCI(instr_2,TIMEFRAMES,period,price,1);
double CCI_1_3=iCCI(instr_3,TIMEFRAMES,period,price,1);
double CCI_1_4=iCCI(instr_4,TIMEFRAMES,period,price,1);
double CCI_1_5=iCCI(instr_5,TIMEFRAMES,period,price,1);
//---3--
double CCI_2_1=iCCI(instr_1,TIMEFRAMES,period,price,2);
double CCI_2_2=iCCI(instr_2,TIMEFRAMES,period,price,2);
double CCI_2_3=iCCI(instr_3,TIMEFRAMES,period,price,2);
double CCI_2_4=iCCI(instr_4,TIMEFRAMES,period,price,2);
double CCI_2_5=iCCI(instr_5,TIMEFRAMES,period,price,2);
// string symbol, // имя символа
// int timeframe, // таймфрейм
// int period, // период
// int applied_price, // тип цены
// int shift // сдвиг
double SPREAD_1=MarketInfo(instr_1,MODE_SPREAD);// Спрэд в пунктах
double SPREAD_2=MarketInfo(instr_2,MODE_SPREAD);// Спрэд в пунктах
double SPREAD_3=MarketInfo(instr_3,MODE_SPREAD);// Спрэд в пунктах
// string symbol, // символ инструмента
// int type // тип информации
//===условия на покупку
double rek_1=0;
if (CCI_0_1>CCI_1_1 && CCI_1_1>CCI_2_1)
rek_1=1;
if (CCI_0_1<CCI_1_1 && CCI_1_1<CCI_2_1)
rek_1=-1;
double rek_2=0;
if (CCI_0_2>CCI_1_2 && CCI_1_2>CCI_2_2)
rek_2=1;
if (CCI_0_2<CCI_1_2 && CCI_1_2<CCI_2_2)
rek_2=-1;
double rek_3=0;
if (CCI_0_3>CCI_1_3 && CCI_1_3>CCI_2_3)
rek_3=1;
if (CCI_0_3<CCI_1_3 && CCI_1_3<CCI_2_3)
rek_3=-1;
double rek_4=0;
if (CCI_0_4>CCI_1_4 && CCI_1_4>CCI_2_4)
rek_4=1;
if (CCI_0_4<CCI_1_4 && CCI_1_4<CCI_2_4)
rek_4=-1;
double rek_5=0;
if (CCI_0_5>CCI_1_5 && CCI_1_5>CCI_2_5)
rek_5=1;
if (CCI_0_5<CCI_1_5 && CCI_1_5<CCI_2_5)
rek_5=-1;
double summ_rek_1=rek_1+rek_2+rek_3+rek_4+rek_5;
//========================================================================
//---1--
double CCI_TF1_0_1=iCCI(instr_1,TIMEFRAMES_1,period,price,0);
double CCI_TF1_0_2=iCCI(instr_2,TIMEFRAMES_1,period,price,0);
double CCI_TF1_0_3=iCCI(instr_3,TIMEFRAMES_1,period,price,0);
double CCI_TF1_0_4=iCCI(instr_4,TIMEFRAMES_1,period,price,0);
double CCI_TF1_0_5=iCCI(instr_5,TIMEFRAMES_1,period,price,0);
//---2--
double CCI_TF1_1_1=iCCI(instr_1,TIMEFRAMES_1,period,price,1);
double CCI_TF1_1_2=iCCI(instr_2,TIMEFRAMES_1,period,price,1);
double CCI_TF1_1_3=iCCI(instr_3,TIMEFRAMES_1,period,price,1);
double CCI_TF1_1_4=iCCI(instr_4,TIMEFRAMES_1,period,price,1);
double CCI_TF1_1_5=iCCI(instr_5,TIMEFRAMES_1,period,price,1);
//---3--
double CCI_TF1_2_1=iCCI(instr_1,TIMEFRAMES_1,period,price,2);
double CCI_TF1_2_2=iCCI(instr_2,TIMEFRAMES_1,period,price,2);
double CCI_TF1_2_3=iCCI(instr_3,TIMEFRAMES_1,period,price,2);
double CCI_TF1_2_4=iCCI(instr_4,TIMEFRAMES_1,period,price,2);
double CCI_TF1_2_5=iCCI(instr_5,TIMEFRAMES_1,period,price,2);
//===условия на покупку
double rek_tf1_1=0;
if (CCI_TF1_0_1>CCI_TF1_1_1 && CCI_TF1_1_1>CCI_TF1_2_1)
rek_tf1_1=1;
if (CCI_TF1_0_1<CCI_TF1_1_1 && CCI_TF1_1_1<CCI_TF1_2_1)
rek_tf1_1=-1;
double rek_tf1_2=0;
if (CCI_TF1_0_2>CCI_TF1_1_2 && CCI_TF1_1_2>CCI_TF1_2_2)
rek_tf1_2=1;
if (CCI_TF1_0_2<CCI_TF1_1_2 && CCI_TF1_1_2<CCI_TF1_2_2)
rek_tf1_2=-1;
double rek_tf1_3=0;
if (CCI_TF1_0_3>CCI_TF1_1_3 && CCI_TF1_1_3>CCI_TF1_2_3)
rek_tf1_3=1;
if (CCI_TF1_0_3<CCI_TF1_1_3 && CCI_TF1_1_3<CCI_TF1_2_3)
rek_tf1_3=-1;
double rek_tf1_4=0;
if (CCI_TF1_0_4>CCI_TF1_1_4 && CCI_TF1_1_4>CCI_TF1_2_4)
rek_tf1_4=1;
if (CCI_TF1_0_4<CCI_TF1_1_4 && CCI_TF1_1_4<CCI_TF1_2_4)
rek_tf1_4=-1;
double rek_tf1_5=0;
if (CCI_TF1_0_5>CCI_TF1_1_5 && CCI_TF1_1_5>CCI_TF1_2_5)
rek_tf1_5=1;
if (CCI_TF1_0_5<CCI_TF1_1_5 && CCI_TF1_1_5<CCI_TF1_2_5)
rek_tf1_5=-1;
double summ_rek_2=rek_tf1_1+rek_tf1_2+rek_tf1_3+rek_tf1_4+rek_tf1_5;
double summ_par=summ_rek_1+summ_rek_2;
//====================ордера на покупку=======================================================
if (summ_par>zona)
{
{
k1=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
bool sel1=OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == instr_1 && OrderMagicNumber() == Magic_1 && OrderType() == OP_BUY) k1++;
}
if (k1 == 0)
{
RefreshRates();
double ASK_1=MarketInfo(instr_1,MODE_ASK);
double send_1= OrderSend(instr_1, OP_BUY, LotsNumber, ASK_1, Slipp, 0, 0," "+instr_1+" B_"+(string)Magic_1, Magic_1, 0, Blue);
}
}
{
k2=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
bool sel2=OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == instr_2 && OrderMagicNumber() == Magic_2 && OrderType() == OP_BUY) k2++;
}
if (k2 == 0)
{
RefreshRates();
double ASK_2=MarketInfo(instr_2,MODE_ASK);
double send_2= OrderSend(instr_2, OP_BUY, LotsNumber, ASK_2, Slipp, 0, 0," "+instr_2+" B_"+(string)Magic_2, Magic_2, 0, Blue);
}
}
{
k3=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
bool sel3=OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == instr_3 && OrderMagicNumber() == Magic_3 && OrderType() == OP_BUY) k3++;
}
if (k3 == 0)
{
RefreshRates();
double ASK_3=MarketInfo(instr_3,MODE_ASK);
double send_3= OrderSend(instr_3, OP_BUY, LotsNumber, ASK_3, Slipp, 0, 0," "+instr_3+" B_"+(string)Magic_3, Magic_3, 0, Blue);
}
}
}
//--------------------------------------------------------------------------------------------
//====================ордера на продажу=======================================================
if (summ_par<zona*(-1))
{
{
k1=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
bool sel1=OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == instr_1 && OrderMagicNumber() == Magic_1 && OrderType() == OP_SELL) k1++;
}
if (k1 == 0)
{
RefreshRates();
double BID_1=MarketInfo(instr_1,MODE_BID);
double send_1= OrderSend(instr_1, OP_SELL, LotsNumber, BID_1, Slipp, 0, 0," "+instr_1+" S_"+(string)Magic_1, Magic_1, 0, Blue);
}
}
{
k2=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
bool sel2=OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == instr_2 && OrderMagicNumber() == Magic_2 && OrderType() == OP_SELL) k2++;
}
if (k2 == 0)
{
RefreshRates();
double BID_2=MarketInfo(instr_2,MODE_BID);
double send_2= OrderSend(instr_2, OP_SELL, LotsNumber, BID_2, Slipp, 0, 0," "+instr_2+" S_"+(string)Magic_2, Magic_2, 0, Blue);
}
}
{
k3=0;
for (i=OrdersTotal()-1;i>=0;i--)
{
bool sel3=OrderSelect (i, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == instr_3 && OrderMagicNumber() == Magic_3 && OrderType() == OP_SELL) k3++;
}
if (k3 == 0)
{
RefreshRates();
double BID_3=MarketInfo(instr_3,MODE_BID);
double send_3= OrderSend(instr_3, OP_SELL, LotsNumber, BID_3, Slipp, 0, 0," "+instr_3+" S_"+(string)Magic_3, Magic_3, 0, Blue);
}
}
}
//---------------------------------------------------------------------------------------------
Comment("___",instr_1,"______"," ",DoubleToStr(CCI_0_1,2),"______"," ", rek_1,"_____",rek_tf1_1,
"\n","___",instr_2,"______"," ",DoubleToStr(CCI_0_2,2),"______"," ",rek_2,"_____",rek_tf1_2,
"\n","___",instr_3,"______"," ",DoubleToStr(CCI_0_3,2),"______"," ",rek_3,"_____",rek_tf1_3,
"\n","___",instr_4,"______"," ",DoubleToStr(CCI_0_4,2),"______"," ",rek_4,"_____",rek_tf1_4,
"\n","___",instr_5,"______"," ",DoubleToStr(CCI_0_5,2),"______"," ",rek_5,"_____",rek_tf1_5,
"\n", "____________________________________________________",summ_rek_1,"___", summ_rek_2,"___", summ_par
);
return(0);
}
//+------------------------------------------------------------------+