Это когда много индикаторов встроенно настройки вынесены и юзер выбирает параметры индюков для входа + параметры сделки. Тут точно ктото выкладывал
К сож. не могу привести ссылку. Я брал этот код здесь, в разделе CODE BASE , - может пригодится:
extern string s1 = "EURUSD"; extern int x1 = 100; extern int x2 = 100; extern int x3 = 100; extern int x4 = 100; extern double sl1 = 60; extern int tp1 = 60; extern string s2 = "GBPJPY"; extern int x5 = 100; extern int x6 = 100; extern int x7 = 100; extern int x8 = 100; extern double sl2 = 60; extern int tp2 = 60; extern string s3 = "AUDNZD"; extern int x9 = 100; extern int x10 = 100; extern int x11 = 100; extern int x12 = 100; extern double sl3 = 60; extern int tp3 = 60; extern double lot = 0.2; extern double sl = 85; extern int MagicNumber = 777; static int prevtime = 0; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (Time[0] == prevtime) return(0); prevtime = Time[0]; //--- double s1_bid = MarketInfo(s1,MODE_BID); double s1_ask = MarketInfo(s1,MODE_ASK); double s2_bid = MarketInfo(s2,MODE_BID); double s2_ask = MarketInfo(s2,MODE_ASK); double s3_bid = MarketInfo(s3,MODE_BID); double s3_ask = MarketInfo(s3,MODE_ASK); if(retOrders(s1)==0 && perceptron(s1,x1,x2,x3,x4)>0){ OrderSend(s1,OP_BUY, lot, s1_ask, 3, s1_bid - sl1 * Point, s1_bid + tp1 * Point, "", MagicNumber, 0, Blue);}else{prevtime = Time[1];} if(retOrders(s2)==0 && perceptron(s2,x5,x6,x7,x8)>0){ OrderSend(s2,OP_BUY, lot, s2_ask, 3, s2_bid - sl2 * Point, s2_bid + tp2 * Point, "", MagicNumber, 0, Blue);}else{prevtime = Time[1];} if(retOrders(s3)==0 && perceptron(s3,x9,x10,x11,x12)>0){ OrderSend(s3,OP_BUY, lot, s3_ask, 3, s3_bid - sl3 * Point, s3_bid + tp3 * Point, "", MagicNumber, 0, Blue);}else{prevtime = Time[1];} if(retOrders(s1)==0 && perceptron(s1,x1,x2,x3,x4)<0){ OrderSend(s1,OP_SELL,lot, s1_bid, 3, s1_ask + sl1 * Point, s1_ask - tp1 * Point, "", MagicNumber, 0, Red);}else{prevtime = Time[1];} if(retOrders(s2)==0 && perceptron(s2,x5,x6,x7,x8)<0){ OrderSend(s2,OP_SELL,lot, s2_bid, 3, s2_ask + sl2 * Point, s2_ask - tp2 * Point, "", MagicNumber, 0, Red);}else{prevtime = Time[1];} if(retOrders(s3)==0 && perceptron(s3,x9,x10,x11,x12)<0){ OrderSend(s3,OP_SELL,lot, s3_bid, 3, s3_ask + sl3 * Point, s3_ask - tp3 * Point, "", MagicNumber, 0, Red);}else{prevtime = Time[1];} //////////////////////////////////////////////////////////////////////////////////////////// return(0); } //+------------------------------------------------------------------+ double perceptron(string Sy,int y1,int y2,int y3,int y4) { double w1 = y1 - 100; double w2 = y2 - 100; double w3 = y3 - 100; double w4 = y4 - 100; double a1 = iAC(Sy, 0, 0); double a2 = iAC(Sy, 0, 7); double a3 = iAC(Sy, 0, 14); double a4 = iAC(Sy, 0, 21); return(w1 * a1 + w2 * a2 + w3 * a3 + w4 * a4); } //+------------------------------------------------------------------+ int retOrders(string sym){ int total = OrdersTotal(); int OrderCount=0; for(int i = 0; i <= total; i++) { OrderSelect(i, SELECT_BY_POS, MODE_TRADES); if( OrderMagicNumber() == MagicNumber && OrderSymbol() == sym) { OrderCount++; } } return(OrderCount); } //+------------------------------------------------------------------+
Ребята сдесь кто-то выкладывал советника в котором уже куча индикаторов но нет системы. Не могу найти, помогите пожалуйста.
Вот еще тоже нечто подобное :
Спасибо большое Леонид, но это все не то к сожалению.
Ребята сдесь кто-то выкладывал советника в котором уже куча индикаторов но нет системы. Не могу найти, помогите пожалуйста.
#property copyright "Scriptong"
#property link "scriptong@mail.ru"
//---- input parameters
extern double Lots = 0.1; // Объем открываемой позиции
extern int TakeProfit = 0; // Профит в пунктах. Если 0, то не устанавливается
extern int StopLoss = 0; // Стоп в пунктах. Если 0, то не устанавливается
extern int TrailingStop1 = 30; // Безубыток
extern int TrailingStop2 = 50; // Классический трейлинг-стоп
extern string A1 = "Настройки ADX";
extern bool UseADX = True; //Если True, то использовать сигналы ADX, иначе - нет
extern int ADXPeriod = 21;
extern int ADXPrice = 0; // Цена, по которой считается ADX:
// 0 - Close
// 1 - Open
// 2 - High
// 3 - Low
// 4 - Median Price
// 5 - Typical Price
// 6 - Weigthed Price
extern string A2 = "==========================";
extern string A3 = "Настройки Bollinger Bands";
extern bool UseBollinger = False;
extern int BandsPeriod = 20;
extern int BandsShift = 0;
extern int BandsDeviation = 2;
extern int BandsPrice = 0;
extern string A4 = "==========================";
extern string A5 = "Настройки CCI";
extern bool UseCCI = False;
extern int CCIPeriod = 14;
extern int CCIPrice = 0;
extern int CCIHighLevel = 100;
extern int CCILowLevel = -100;
extern string A6 = "==========================";
extern string A7 = "Настройки пересечения MA";
extern bool UseCrossMA = False;
extern int MAFastPeriod = 34;
extern int MAFastPrice = 0;
extern int MAFastMethod = 0; // Метод MA:
// 0 - Simple MA
// 1 - Exponential MA
// 2 - Smoothed MA
// 3 - Linear weighted MA
extern int MAFastShift = 0;
extern int MASlowPeriod = 89;
extern int MASlowPrice = 0;
extern int MASlowMethod = 0;
extern int MASlowShift = 0;
extern string A8 = "==========================";
extern string A9 = "Настройки индикатора Parabolic SAR";
extern bool UseSAR = False;
extern double SARStep = 0.01;
extern double SARMaximum = 0.03;
extern string A10 = "==========================";
extern string A11 = "Настройки индиктора Standard Deviation";
extern bool UseStDev = False;
extern int StDevPeriod = 21;
extern int StDevPrice = 0;
extern int StDevMethod = 0;
extern int StDevShift = 0;
extern string A12 = "==========================";
extern string A13 = "Настройки индикатора MACD";
extern bool UseMACD = False;
extern int MACDFast = 12;
extern int MACDSlow = 26;
extern int MACDSignal = 9;
extern int MACDPrice = 0;
extern string A14 = "==========================";
extern string A15 = "Настройки индикатора DeMarker";
extern bool UseDeMarker = False;
extern int DMPeriod = 24;
extern double DMHighLevel = 0.7;
extern double DMLowLevel = 0.3;
extern string A16 = "==========================";
extern string A17 = "Настройки индикатора Envelopes";
extern bool UseEnvelopes = False;
extern int EnvPeriod = 21;
extern int EnvShift = 0;
extern int EnvMethod = 0;
extern int EnvPrice = 0;
extern double EnvDeviation = 0.5;
extern string A18 = "==========================";
extern string A19 = "Настройки индикатора Force Index";
extern bool UseForceIndex = False;
extern int FIPeriod = 13;
extern int FIMethod = 0;
extern int FIPrice = 0;
extern string A20 = "==========================";
extern string A21 = "Настройки индикатора Momentum";
extern bool UseMomentum = False;
extern int MomPeriod = 14;
extern int MomPrice = 0;
extern string A22 = "==========================";
extern string A23 = "Настройки индикатора OsMA";
extern bool UseOsMA = False;
extern int OsMAFast = 12;
extern int OsMASlow = 26;
extern int OsMASignal = 9;
extern int OsMAPrice = 0;
extern string A24 = "==========================";
extern string A25 = "Настройки индикатора RSI";
extern bool UseRSI = False;
extern int RSIPeriod = 21;
extern int RSIPrice = 0;
extern int RSIHighLevel = 70;
extern int RSILowLevel = 30;
extern string A26 = "==========================";
extern string A27 = "Настройки индикатора RVI";
extern bool UseRVI = False;
extern int RVIPeriod = 21;
extern string A28 = "==========================";
extern string A29 = "Настройки индикатора Stochastic";
extern bool UseStochastic = False;
extern int StochK = 5;
extern int StochD = 3;
extern int StochSlowing = 10;
extern int StochPrice = 0;
extern int StochMethod = 0;
extern string A30 = "==========================";
extern string A31 = "Настройки индикатора Williams Percent Range";
extern bool UseWPR = False;
extern int WPRPeriod = 24;
extern double WPRHighLevel = -20;
extern double WPRLowLevel = -80;
extern string A32 = "==========================";
extern string A33 = "Настройки осциллятора Awesome";
extern bool UseAO = False;
extern string A34 = "==========================";
extern string A35 = "Настройки осциллятора Accelerator/Decelerator";
extern bool UseAC = False;
extern string A36 = "==========================";
extern string A37 = "Настройки индикатора Fractals";
extern bool UseFractals = False;
extern string A38 = "==========================";
extern string A39 = "Настройки индикатора Alligator";
extern bool UseAlligator = False;
extern int JawPeriod = 13;
extern int JawShift = 8;
extern int TeethPeriod = 8;
extern int TeethShift = 5;
extern int LipsPeriod = 5;
extern int LipsShift = 3;
extern int AlligatorMethod = 2;
extern int AlligatorPrice = 4;
extern string A40 = "==========================";
extern string A41 = "Настройки индикатора Bill Williams MFI";
extern bool UseBWMFI = False;
extern string A42 = "==========================";
extern string OpenOrderSound = "ok.wav"; // Звук для открытия ордера
extern int MagicNumber = 17589 ;
bool Activate, FreeMarginAlert, FatalError;
double Tick, Spread, StopLevel, MinLot, MaxLot, LotStep;
datetime LastBar, LastBuySignal, LastSellSignal, LastMess;
int Signal, UseInd;
string Comm;
//+-------------------------------------------------------------------------------------+
//| Функция инициализации эксперта |
//+-------------------------------------------------------------------------------------+
int init()
{
//----
Activate = False;
// - 1 - == Сбор информации об условиях торговли ========================================
Tick = MarketInfo(Symbol(), MODE_TICKSIZE); // минимальный тик
Spread = ND(MarketInfo(Symbol(), MODE_SPREAD)*Point); // текщий спрэд
StopLevel = ND(MarketInfo(Symbol(), MODE_STOPLEVEL)*Point); // текущий уровень стопов
MinLot = MarketInfo(Symbol(), MODE_MINLOT); // минимальный разрешенный объем сделки
MaxLot = MarketInfo(Symbol(), MODE_MAXLOT); // максимальный разрешенный объем сделки
LotStep = MarketInfo(Symbol(), MODE_LOTSTEP); // шаг приращения объема сделки
// - 1 - == Окончание блока =============================================================
// - 2 - == Приведение объема сделки к допустимому и проверка корректности объема =======
Lots = MathRound(Lots/LotStep)*LotStep; // округление объема до ближайшего допустимого
if(Lots < MinLot || Lots > MaxLot) // объем сделки не меньше MinLot и не больше MaxLot
{
Comment("Параметром Lots был задан неправильный объем сделки! Советник отключен!");
return(0);
}
// - 2 - == Окончание блока =============================================================
UseInd = UseADX + UseBollinger + UseCCI + UseCrossMA + UseSAR + UseStDev + UseMACD +
UseDeMarker + UseEnvelopes + UseForceIndex + UseMomentum + UseOsMA + UseRSI +
UseRVI + UseStochastic + UseWPR + UseAO + UseAC + UseFractals + UseAlligator+
UseBWMFI;
Comm = "Выбраны следующие индикаторы:\n";
if (UseADX) Comm = Comm + "ADX\n";
if (UseBollinger) Comm = Comm + "Bollinger Bands\n";
if (UseCCI) Comm = Comm + "CCI\n";
if (UseCrossMA) Comm = Comm + "CrossMA\n";
if (UseSAR) Comm = Comm + "Parabolic\n";
if (UseStDev) Comm = Comm + "StDev\n";
if (UseMACD) Comm = Comm + "MACD\n";
if (UseDeMarker) Comm = Comm + "DeMarker\n";
if (UseForceIndex) Comm = Comm + "ForceIndex\n";
if (UseMomentum) Comm = Comm + "Momentum\n";
if (UseOsMA) Comm = Comm + "OsMA\n";
if (UseRSI) Comm = Comm + "RSI\n";
if (UseRVI) Comm = Comm + "RVI\n";
if (UseStochastic) Comm = Comm + "Stochastic\n";
if (UseWPR) Comm = Comm + "WPR\n";
if (UseAO) Comm = Comm + "AO\n";
if (UseAC) Comm = Comm + "AC\n";
if (UseFractals) Comm = Comm + "Fractals\n";
if (UseAlligator) Comm = Comm + "Alligator\n";
if (UseBWMFI) Comm = Comm + "Bill Williams MFI\n";
Comment(Comm);
LastBuySignal = 0;
LastSellSignal = 0;
LastBar = 0;
Activate = True; // Все проверки успешно завершены, возводим флаг активизации эксперта
//----
return(0);
}
//+-------------------------------------------------------------------------------------+
//| Функция деинициализации эксперта |
//+-------------------------------------------------------------------------------------+
int deinit()
{
//----
Comment("");
//----
return(0);
}
//+--------------------------------------------------------------------------------------+
//| Двухуровневый трейлинг-стоп |
//| TrailingStop1 - выставляется один раз после достижения нужного кол-ва пунктов прибыли|
//| TrailingStop2 - движущийся. Включается после отработки трейлинг-стопа первого уровня |
//+--------------------------------------------------------------------------------------+
void TrailingStopDoubleLevel()
{
for (int i = 0; i < OrdersTotal(); i++)
if (OrderSelect(i, SELECT_BY_POS))
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderType() < 2)
{
if (!WaitForTradeContext()) break;
// Блок 1. Нормализация основных характеристик позиции -----------------------------------
RefreshRates();
double OpPrice = ND(OrderOpenPrice()); // Приведение цены открытия к нужной точности
double SL = ND(OrderStopLoss()); // Приведение стоп-приказа к нужной точности
double NBid = ND(Bid);
double NAsk = ND(Ask);
// Блок 1. -------------------------------------------------------------------------------
// Блок 2. Классический трейлинг длинной позиции -----------------------------------------
if(OrderType() == OP_BUY)
if(SL >= OpPrice && TrailingStop2 != 0) // Если стоп перенесен в безубыток
{
if(NBid > ND(Tick*TrailingStop2+SL) && // Если BID больше стопа на TrailingStop2
TrailingStop2 > StopLevel/Point) // И TrailingStop2 больше уровня стопов
if(WaitForTradeContext()) // Ждем освобождение торгового потока
if(!OrderModify(OrderTicket(), 0,
ND(NBid-TrailingStop2*Tick), OrderTakeProfit(), 0)) // Модификация
Print("Не удалось изменить ордер BUY. Второй трал. Ошибка №",
GetLastError(), ", Старый: ", SL, ", Новый: ",
NBid-TrailingStop2*Tick); // Развернутое сообщение об ошибке
}
// Блок 2. -------------------------------------------------------------------------------
// Блок 3. Перенос стопа в безубыток длинной позиции -------------------------------------
else
{
if(ND(OpPrice+TrailingStop1*Tick) < NBid && // Если BID больше цены открытия
TrailingStop1 > StopLevel/Point) // на TrailingStop1 пунктов и дальше, чем
if(WaitForTradeContext()) // уровень стопов
if(!OrderModify(OrderTicket(), 0, OpPrice,
OrderTakeProfit(), 0)) // модификация
Print("Не удалось изменить ордер BUY. Первый трал. Ошибка №", // сообщение
GetLastError(), ", Старый: ", SL, ", Новый: ", OpPrice);// в журнал
}
// Блок 3. -------------------------------------------------------------------------------
// Блок 4. Классический трейлинг короткой позиции ----------------------------------------
if(OrderType()==OP_SELL) // Для короткой позиции
if(OpPrice >= SL && SL != 0 && TrailingStop2 != 0) // Если стоп перенесен в безубыток
{
if(TrailingStop2 > StopLevel/Point && // TrailingStop2 больше уровня стопов
SL > ND(Tick*TrailingStop2+NAsk)) // и ASK ниже стопа на TrailingStop2 пунктов
if(WaitForTradeContext()) // Ожидаем освобождения торгового потока
if(!OrderModify(OrderTicket(), 0, ND(NAsk+TrailingStop2*Tick),
OrderTakeProfit(), 0)) // модификация
Print("Не удалось изменить ордер SELL. Второй трал. Ошибка №",
GetLastError(), ", Старый: ", SL, ", Новый: ", NAsk+TrailingStop2*Tick);
}
// Блок 4. -------------------------------------------------------------------------------
// Блок 5. Перенос стопа в безубыток короткой позиции ------------------------------------
else
{
if(OpPrice > ND(NAsk+Tick*TrailingStop1) && //ASK ниже открытия на TrailingStop1
TrailingStop1 > StopLevel/Point) // и на StopLevel пунктов
if(WaitForTradeContext()) // Ожидаем торговый поток
if(!OrderModify(OrderTicket(), 0, OpPrice, OrderTakeProfit(), 0))//модификация
Print("Не удалось изменить ордер SELL. Первый трал. Ошибка №",
GetLastError(), ", Старый: ", SL, ", Новый: ", OpPrice);
}
// Блок 5. -------------------------------------------------------------------------------
}
return(0);
}
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Ребята сдесь кто-то выкладывал советника в котором уже куча индикаторов но нет системы. Не могу найти, помогите пожалуйста.