Спасибо! Сейчас думаю правильно установил)). Еще я так понимаю 1.EAX_PIN_SSRS_1 и параметр 6, это 6 пинов в доске, и при совпадении всех 6ти открывается ордер???
6 Пинов вы можете присоединить к доске. Одни пины открывают др закрывают
От denya, 25 апреля, 2015 в Торговые системы
Спасибо! Сейчас думаю правильно установил)). Еще я так понимаю 1.EAX_PIN_SSRS_1 и параметр 6, это 6 пинов в доске, и при совпадении всех 6ти открывается ордер???
webpegas
6 Пинов вы можете присоединить к доске. Одни пины открывают др закрывают
Правильно ли я установил.. получается работа только по одному пину?
Нет не правильно. Пин индикаторы ТОЛЬКО для досок определенной "серии". Они ставятся прямо в окно доски. читай тему
Спасибо! Сейчас думаю правильно установил)). Еще я так понимаю 1.EAX_PIN_SSRS_1 и параметр 6, это 6 пинов в доске, и при совпадении всех 6ти открывается ордер???
6 Пинов вы можете присоединить к доске. Одни пины открывают др закрывают
Привет всем! Как исправить, если у брокера не стандартные символы, а хочется подключить доску?
Привет всем! Как исправить, если у брокера не стандартные символы, а хочется подключить доску?
EAX_PIN_SSRC_END.ex4
EAX_PIN_SSRC_END.mq4
SSRC.ex4
SSRC.mq4
SSRC_MTF_FOR_PIN.ex4
SSRC_MTF_FOR_PIN.mq4
Изменено 26 мая, 2017 пользователем sniv
Помогите кто нить скомпилировать этот код в советник, я полный дуб в этом #:-s . Сова имеет функцию нужную для моей стратегии обрезать часть прибыли (объема) . Нашел похожий код. А так мне надо чтобы после определенного количества пунктов обрезалась позиция. И чтобы сова могла обрезать сделки по всем открытым парам.
Функция в сове вроди такая " close_lot=NormalizeDouble(OrderLots()/2,2);
"2" это закрыть половину, округление согласно NormalizeDouble "
extern string General_settings ="-------------------------------------------------------";
extern double Lots = 0.01;
extern int Delta = 1;
extern string Order_settings ="-------Настройки СЛ и ТП-------------------------------";
extern int TakeProfit = 500;
extern int StopLoss = 400;
extern string Order_management ="-------Настройки Риск Менеджмента----------------------";
extern bool fixed_sl=true;
extern int NoLoss = 100;
extern int NoLossFiboLevels = 60;
extern int NoLossProfit = 0;
extern string st5 ="-Настройки Дистанции и Процента для закрытия-----------";
extern bool Lot_Mode_Percent = true;
extern int Lot_Percent_23_6 = 5;
extern int Lot_Percent_38_2 = 20;
extern int Lot_Percent_50 = 30;
extern int Lot_Percent_61_8 = 40;
extern string st6 ="-Веремя работы советника------------------------------";
extern int TimeStart = 01; // Время начала работы советника
extern int TimeEnd = 23; // Время окончания работы советника
extern int TimeStartMonday = 3; // Время начало торговли в понидельник
extern int TimeEndFriday = 17; // Время после которого не торгуем в пятницу
// Глобальные переменные
int LastTradeTimeBuy = 0; // Время последней открытой сделки
int LastTradeTimeSell = 0;
int LastTradeBuy = 0; // Время последней открытой сделки
int LastTradeSell = 0; // Время последней открытой сделки
int MagicNumber= 0;
double StopLossValue = 0;
#define HR2400 86400 // 24 * 3600
int TimeOfDay(datetime when){ return( when % HR2400 ); }
datetime DateOfDay(datetime when){ return( when - TimeOfDay(when) ); }
datetime Today(){ return(DateOfDay( TimeCurrent() )); }
datetime Tomorrow(){ return(Today() + HR2400); }
datetime Yesterday(){ return( iTime(NULL, PERIOD_D1, 1) ); }
int tomorrow_day =0;
int current_day = 0;
int count_buy = 0;
int count_sell = 0;
//------- Внешние параметры модуля -----------------------------------
extern string _Parameters_b_Lot = "- Параметры модуля расчёта лота----------------------";
extern int LotsWayChoice = 1; // Способ выбора рабочего лота:
// 0-фиксированный,
// 1-процент от депозита,
// 2-фиксированно-пропорциональный,
// 3-фракционно-фиксированный,
extern int LotsPercent = 10; // Процент от депозита
extern int LotsDeltaDepo = 500; // Коэффициент приращения депозита
extern int LotsDepoForOne = 500; // Размер депозита для одного минилота
extern int LotsMax = 1000; // Максимальное количество минилотов
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
double fPreviousBid = 0; // значение bid на предыдущем тике
string symb;
int OnInit()
{
fPreviousBid = 0;
return(INIT_SUCCEEDED);
}
void OnTick()
{
symb = _Symbol;
Bkl();
}
void Bkl()
{
static datetime bodCurr; datetime bodPrev = bodCurr; bodCurr = DateOfDay( TimeCurrent() );
bool isNewDay = bodPrev != bodCurr;
if(isNewDay){
int part_order_close_sell_23_6 = 0;
};
if (TradeStatuse() > 0) return (0);
double SL=0,TP=0,NoLossTP=0,Current_Value,Bid_Value_23_6=0,Ask_Value_23_6=0,Bid_Value_38_2=0,Ask_Value_38_2=0,Bid_Value_50=0,Ask_Value_50=0,Bid_Value_61_8=0,Ask_Value_61_8=0,
Lot_23_6=0,
Lot_38_2=0,
Lot_50=0,
Lot_61_8=0,
Spread=Ask-Bid,
StopLevel=Point*MarketInfo(Symbol(),MODE_STOPLEVEL),
HighD1=iHigh(Symbol(),PERIOD_D1,1),
LowD1=iLow(Symbol(),PERIOD_D1,1),
HighD1Today=iHigh(Symbol(),PERIOD_D1,0),
LowD1Today=iLow(Symbol(),PERIOD_D1,0),
HighH4=iHigh(Symbol(),PERIOD_H4,1),
LowH4=iLow(Symbol(),PERIOD_H4,1),
HighH6=iHigh(Symbol(),PERIOD_H6,0),
LowH6=iLow(Symbol(),PERIOD_H6,0),
HighW1=iHigh(Symbol(),PERIOD_W1,1),
LowW1=iLow(Symbol(),PERIOD_W1,1),
CheckHiLivels = 0, CheckLowLivels = 0;
static double max_23_6 = 0;
static double max_38_2 = 0;
static double max_50_0 = 0;
static double max_61_8 = 0;
static double min_23_6 = 0;
static double min_38_2 = 0;
static double min_50_0 = 0;
static double min_61_8 = 0;
static double high_day = 0;
static double low_day = 0;
high_day = iHigh(Symbol(), PERIOD_D1, 1);
low_day = iLow(Symbol(), PERIOD_D1, 1);
int total = OrdersTotal(); // сколько всего ордеров открыто
double fUpperLevel = iHigh(Symbol(), PERIOD_D1, 1) + Delta * Point();
double fLowerLevel = iLow(Symbol(), PERIOD_D1, 1) - Delta * Point();
double TodayHi = iHigh(Symbol(),PERIOD_D1,0); // Цена закрытия предпоследнего дня
double TodayLow = iLow(Symbol(),PERIOD_D1,0); // Цена закрытия последнего дня
if (TodayHi>fUpperLevel && Open[0]
if (TodayLow fLowerLevel) CheckLowLivels = 1;
bool Open_Bay = fPreviousBid > 0 && Bid > fUpperLevel && fPreviousBid
bool Open_Sell = fPreviousBid > 0 && Bid = fLowerLevel && CheckLowLivels == 1;
// запоминаем текущий бид
fPreviousBid = Bid;
int Ticket,cnt,Total=0;
double spread=ask-bid;
int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));
comm=comm+"Вычисленный спред = "+(string)spread_points+" пунктов";
for(cnt=0;cnt
{
OrderSelect(cnt,SELECT_BY_POS);
if(OrderSymbol()==Symbol())
{
Total++;
Lot_23_6 = OrderLots()*Lot_Percent_23_6/100;if(Lot_23_6>OrderLots()||Lot_23_6100)Lot_23_6=100;}
Lot_23_6 = (NormalizeLot(Lot_23_6, False));
Lot_38_2 = OrderLots()*Lot_Percent_38_2/100;if(Lot_38_2>OrderLots()||Lot_38_2100)Lot_38_2=100;}
Lot_38_2 = (NormalizeLot(Lot_38_2, False));
Lot_50 = OrderLots()*Lot_Percent_50/100;if(Lot_50>OrderLots()||Lot_50100)Lot_50=100;}
Lot_50 = (NormalizeLot(Lot_50, False));
Lot_61_8 = OrderLots()*Lot_Percent_61_8/100;if(Lot_61_8>OrderLots()||Lot_61_8100)Lot_61_8=100;}
Lot_61_8 = (NormalizeLot(Lot_61_8, False));
if(OrderType()==OP_BUY)// long position is opened
{
max_23_6 = high_day + (MathAbs(high_day - low_day) / 4.236);
max_38_2 = high_day + (MathAbs(high_day - low_day) / 2.582);
max_50_0 = high_day + (MathAbs(high_day - low_day) / 1.960);
max_61_8 = high_day + (MathAbs(high_day - low_day) / 1.618);
if(Lot_38_2>0&& Bid> max_38_2)
{
if(Lot_38_2>0){
Print ("Частичное закрытие ордера Buy на уровне 32.2");
OrderClose(OrderTicket(), Lot_38_2, Bid, 20, Blue);return(0);}
return(0);
}
if(Lot_50>0&&Bid > max_50_0)
{
if(Lot_50>0){
Print ("Частичное закрытие ордера Buy на уровне 50");
OrderClose(OrderTicket(), Lot_50, Bid, 20, Blue);return(0);}
return(0);
}
if(Lot_61_8>0&&Bid > max_61_8)
{
if(Lot_61_8 > 0){
Print ("Частичное закрытие ордера Buy на уровне 61.8", Lot_61_8);
OrderClose(OrderTicket(), Lot_61_8, Bid, 20, Blue);return(0);}
return(0);
}
if( Bid > OrderOpenPrice()+(NoLoss*Point) && NoLoss>0 )
{
SL = NormalizeDouble(OrderOpenPrice()+(NoLoss*Point),Digits);
if(!CompareDoubles(OrderStopLoss(),SL)){
OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0);
}
return(0);
}
if( Bid > max_23_6 && OrderStopLoss()
{
SL = NormalizeDouble(OrderOpenPrice() + (NoLossFiboLevels*Point),Digits);
if (!CompareDoubles(OrderStopLoss(),SL)){
OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue);
Print ("Частичное закрытие ордера Buy на уровне 23.6");
OrderClose(OrderTicket(), Lot_23_6, Bid, 20, Blue);return(0);
}
}
}
if(OrderType()==OP_SELL)
{
//--sell---------------------------------------------------------------------------------------------------------------------
min_23_6 = low_day - (MathAbs(high_day - low_day) / 4.236);// Alert("min_23_6 ", min_23_6);
min_38_2 = low_day - (MathAbs(high_day - low_day) / 2.582);
min_50_0 = low_day - (MathAbs(high_day - low_day) / 1.960);
min_61_8 = low_day - (MathAbs(high_day - low_day) / 1.618);// Alert("min_61_8 ", min_61_8);
if(Lot_38_2>0&&Ask
{
if(Lot_38_2>0){
Print ("Частичное закрытие ордера Sell на уровне -38.2 ",Ask," Размер лота ",Lot_38_2);
OrderClose(OrderTicket(), Lot_38_2, Ask, 20, Blue);return(0);}
}
if(Lot_50>0&&Ask
{
if(Lot_50>0){
Print ("Частичное закрытие ордера Sell на уровне -50 ",Ask," Размер лота ",Lot_50);
OrderClose(OrderTicket(), Lot_50, Ask, 20, Blue);return(0);}
}
if(Lot_61_8>0&& Ask
{
if(Lot_61_8>0){
Print ("Частичное закрытие ордера Sell на уровне -61.8 ",Ask," Размер лота ",Lot_61_8);
OrderClose(OrderTicket(), Lot_61_8, Ask, 20, Blue);return(0);}
}
if( Ask 0 )
{
SL = NormalizeDouble(OrderOpenPrice() - (NoLoss*Point),Digits);
if (!CompareDoubles(OrderStopLoss(),SL)){
OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue);
}
return(0);
}
if( Ask min_23_6 )
{
SL = NormalizeDouble(OrderOpenPrice() - (NoLossFiboLevels*Point),Digits);
if (!CompareDoubles(OrderStopLoss(),SL)){
OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue);
Print ("Частичное закрытие ордера Sell на уровне -23.6 ",Ask," Размер лота ", Lot_23_6);
OrderClose(OrderTicket(), Lot_23_6, MarketInfo(Symbol(), MODE_ASK), 20, Blue);
}
}
}
}
}
//+----Открытие позиций
int TradeTime=TimeDay(TimeCurrent());
int TradeTimeBuy=TimeDay(TimeCurrent());
int TradeTimeSell=TimeDay(TimeCurrent());
if(Total
{
if(Open_Bay && LastTradeTimeBuy!=TradeTimeBuy )
{
SL = iLow(symb,PERIOD_D1,0);
// Alert("(Bid-SL)*10000 ", (Bid-SL)*100000);
if((Bid-SL)*100000>StopLoss){SL = Bid - (StopLoss*Point);}
if(TakeProfit>0) TP = Ask + TakeProfit*Point;
if(Bid-SL
Ticket=OrderSend(Symbol(),OP_BUY,GetSizeLot(),Ask + Spread ,20,SL,TP);
if (Ticket > 0)
{
LastTradeTimeBuy=TradeTimeBuy; // задаем время сделки, чтобы сегодня больше не торговать
}
return(0);
}
//+----
if(Open_Sell && LastTradeTimeSell!=TradeTimeSell)
{
SL = iHigh(symb,PERIOD_D1,0);
if((Ask+SL)*100000>StopLoss){SL = Ask + (StopLoss*Point);}
if(TakeProfit>0) TP = Bid - TakeProfit*Point;
if (SL-Ask
Ticket = OrderSend(Symbol(),OP_SELL,GetSizeLot(),Bid - Spread,20,SL,TP);
if (Ticket > 0)
{
LastTradeTimeSell=TradeTimeSell; // задаем время сделки, чтобы сегодня больше не торговать
}
return(0);
}
}
// return(0);
}
int TradeStatuse()
{
if ((!IsTesting()) && IsStopped()) return (1); //--- Если не тестовый режим и советник приостановлен (IsStopped).
if ((!IsTesting()) && !IsTradeAllowed()) return (2); //--- Если не тестовый режим и торговля заблокирована (IsTradeAllowed).
if ((!IsTesting()) && IsTradeContextBusy()) return (3); //--- Если не тестовый режим и поток для выполнения торговых операции занят (IsTradeContextBusy).
if (Hour()
if (Hour() >= TimeEndFriday + DayOfWeek() == 5) return (5); //--- Проверка на торговое время в пятницу.
if (TimeEnd
{
if(Hour() >= TimeEnd && Hour()
}
else
{
if ((Hour() = TimeEnd)) return (6); //--- Проверка на торговое время.
}
if ((DayOfWeek() == 0) || (DayOfWeek() == 6)) return (7); //--- Выходные, некоторые брокеры как RVD торговля начинаеться в воскресение вечером
//---
return(0);
}
double GetSizeLot()
{
double dLot;
if (LotsWayChoice==0) dLot=Lots;
// фиксированный процент от депозита
if (LotsWayChoice==1)
{
// dLot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10;
dLot=MathFloor(AccountFreeMargin()/MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(Symbol(),MODE_MINLOT)*AccountLeverage()/100.0*LotsPercent) * MarketInfo(Symbol(),MODE_MINLOT);
}
// фиксированно-пропорциональный
if (LotsWayChoice==2)
{
int k=LotsDepoForOne;
for (double i=2; i
{
k=k+i*LotsDeltaDepo;
if (k>AccountFreeMargin())
{
dLot=(i-1)/10000; break;
}
}
}
// фракционно-фиксированный
if (LotsWayChoice==3)
{
dLot=MathCeil((AccountFreeMargin()-LotsDepoForOne)/LotsDeltaDepo)/10;
}
if (dLot
if (dLot>100) dLot=100;
return(dLot);
}
double NormalizeLot(double lo, bool ro=False, string sy="") {
double l, k;
if (sy=="" || sy=="0") sy=Symbol();
double ls=MarketInfo(sy, MODE_LOTSTEP);
double ml=MarketInfo(sy, MODE_MINLOT);
double mx=MarketInfo(sy, MODE_MAXLOT);
if (ml==0) ml=0.01;
if (mx==0) mx=100;
if (ls>0) k=1/ls; else k=1/ml;
if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;
if (l
if (l>mx) l=mx;
return(l);
}
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
void NoLoss() {
int tip,Ticket;
double StLo,OSL,OOP;
for (int i=0; i
if (OrderSelect(i, SELECT_BY_POS)) {
tip = OrderType();
if (tip
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
Ticket = OrderTicket();
if (tip==OP_BUY) {
if (OSL>OOP) continue;
StLo = NormalizeDouble(OOP+Point,Digits);
if (NormalizeDouble((Bid-OOP)/Point,0)>=NoLoss) {
if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("NoLoss Error ",GetLastError()," buy SL ",OSL,"->",StLo);
}
}
if (tip==OP_SELL) {
if (OSL
StLo = NormalizeDouble(OOP-Point,Digits);
if (NormalizeDouble((OOP-Ask)/Point,0)>=NoLoss) {
if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))
Print("NoLoss Error ",GetLastError()," sell SL ",OSL,"->",StLo);
}
}
}
}
}
}
Изменено 29 мая, 2017 пользователем makstreid
Тебе вот в эту ветку:
Помогите кто нить скомпилировать этот код в советник, я полный дуб в этом
Изменено 29 мая, 2017 пользователем DENYA
DENYA
Тебе вот в эту ветку:
Помогите кто нить скомпилировать этот код в советник, я полный дуб в этом
/ugolok-programmista/13/
Добавлено: 29-05-2017 12:44:19
На выходных писал техническое задание на создание КАНАЛЬНОГО ПИНА. Кроме того есть сформулированные идеи по созданию ПИН-а торговли по пивотам (P, S, R). (Условия на вход, ТП и Сл)
Пока в их отсутствии работаю с МА+ССРЦ+ТМА. Результаты с ночи, НО ... на 1М прибыль ох как ест спред ...
DENYA
Спасибо за подсказку!)
А , сможете помочь создать ПИН , если обрисую подробно суть системы?
Eще один сырец на ваш стол...
Я так понял, что все заметили, что FL11 очень грузит терминал, а пин из него намертво убивает доску.
есть альтернатива l-)
Попробуйте, протестируйте. Напоминаю| ТОЛЬКО ДЕМО |
ПИН рисует стрелочку вниз, когда появляется большое солнышко вверху и стрелочку вверх, когда появляется солнышко внизу.
Сигнал пропадает только тогда, когда появляется противоположный сигнал.
Изменено 30 мая, 2017 пользователем webpegas
Привет! Вот ТЗ , буду очень признателен в помощи!
Очень качественное ТЗ. Молодец. К тому же смотрю есть принцип торговли ВАЛЮТАМИ. Что конечно же для доски является ее собственной родной стихией.
Обрисуй)
Привет! Вот ТЗ , буду очень признателен в помощи!
1.У тебя есть опыт торговли по данной ТС?
2.Торговал вручную или автоматизировал?
3.Как быть с парами, которые являются составной частью КАК одной так и другой корзины? Например GBPUSD входит как фунтовую корзину, так и в долларовую. Скажем по одной корзине мы должны GBPUSD продать, а по другой купить. Как быть
4.Думаю имеет смысл распространить правила и на корзины AUD NZD CHF JPY.... как думаешь?
3....n Очень понравилось "Эта, система целый денежный комбайн, ..."
KuklovodTools.rar
candle_body_size_2.mq4
candle_body_size_Mod_v1.1.ex4
Изменено 1 июня, 2017 пользователем makstreid
Помогите кто нить скомпилировать этот код в советник, я полный дуб в этом . Сова имеет функцию нужную для моей стратегии обрезать часть прибыли (объема) . Нашел похожий код. А так мне надо чтобы после определенного количества пунктов обрезалась позиция. И чтобы сова могла обрезать сделки по всем открытым парам.
Функция в сове вроди такая " close_lot=NormalizeDouble(OrderLots()/2,2);
"2" это закрыть половину, округление согласно NormalizeDouble "
Изменено 1 июня, 2017 пользователем webpegas
Код не проверял и не тестил
Кидаю на график и ошибка.
Кидаю на график и ошибка.
Проверил на тестере - ошибок не выдает. Проверьте, в папку ли Expert положили советник?
Кукловода не запустить мне(((((
webpegas
Изменено 1 июня, 2017 пользователем makstreid
он еще и торгует))) Можете в нем убрать ненужные функции? Нужно оставить размер в процентах сокращение лота, и чтобы он подхватывал все ордера, при достижении плюса в 50 пунктов резал лот
Изменено 1 июня, 2017 пользователем webpegas
Давай так)) По пунктам, что должен делать советник 1....n-пункт
А с ПИНами завязали что ли.Что то не идей, ни отзывов, ни предложений. Все рубят капусту тихо пряча сеты под "подушку"
А с ПИНами завязали что ли.Что то не идей, ни отзывов, ни предложений. Все рубят капусту тихо пряча сеты под "подушку"
Я тут глянул тех идею, есть вопросы:
Приветствую!
Выложите пожалуйста, у кого есть, trend_Alert-PIN-SN в mq4.
Или версию с пином не мультивалютную, а на одну пару.
Спасибо
Давай так)) По пунктам, что должен делать советник 1....n-пункт
Для публикации сообщений создайте учётную запись или авторизуйтесь
Перейти к списку тем