noah10pips2006.mq4
Похожие материалы по тегам
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «noah10pips2006.mq4» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
noah10pips2006 — это торговый советник для MetaTrader 4, который анализирует диапазон предыдущего торгового дня и рассчитывает ключевые уровни: среднюю точку (MP), границы входной зоны (er_hi, er_lo) и проходные уровни (hi_pass, lo_pass). Эти уровни отображаются на графике в виде горизонтальных линий для наглядности.
В заданное время советник выставляет отложенные ордера Buy Stop и Sell Stop, когда цена входит в соответствующие зоны относительно рассчитанных уровней. Поддерживается как фиксированный размер лота, так и расчёт лота на основе процента риска от свободных средств.
Советник управляет открытыми позициями, переводя стоп-лосс в безубыточную зону после достижения заданной прибыли, а при необходимости применяет трейлинг-стоп. Доступны настройки временных окон для торговли, сдвиг часового пояса и возможность отключения торгов в пятницу.
Настройки программы
| Настройка | Описание |
|---|---|
| MAGICNUM | Магический номер ордера для идентификации сделок, открытых данным советником. |
| Lots | Фиксированный размер лота, используемый при включённом режиме FixedLot. |
| StopLoss | Расстояние в пунктах до стоп-лосса для новых ордеров. |
| TakeProfit | Расстояние в пунктах до тейк-профита для новых ордеров. |
| TrailingStop | Расстояние в пунктах для трейлинг-стопа после достижения порога TrailSecureProfit. При значении 0 трейлинг отключён. |
| slippage | Допустимое проскальгивание в пунктах при исполнении ордеров. |
| MaximumRisk | Процент риска от свободных средств, используемый для расчёта размера лота при отключённом FixedLot. |
| MaxLot | Максимально допустимый размер лота при расчёте на основе риска. |
| MinLot | Минимально допустимый размер лота. |
| FixedLot | Переключатель фиксированного размера лота. При значении true используется фиксированный лот, при false — расчёт на основе риска. |
| NY 7,15; (TimeZoneOfData) | Сдвиг часового пояса данных в часах (например, 7 для Нью-Йорка), используется для корректировки времени расчётов и торговых событий. |
| 9:00 PM EST (StartHour) | Час начала торговой сессии в указанном часовом поясе, когда советник начинает анализ и выставление ордеров. |
| StartMinute | Минута начала торговой сессии в указанном часовом поясе. |
| EndHour | Час окончания торговой сессии в указанном часовом поясе, после которого все позиции закрываются. |
| EndMinute | Минута окончания торговой сессии в указанном часовом поясе. |
| FridayEndHour | Час окончания торгов в пятницу в местном времени. |
| SecureProfit | Количество пунктов прибыли, после которого стоп-лосс переводится в безубыточную зону. |
| TrailSecureProfit | Количество пунктов прибыли, которое должно быть достигнуто перед началом трейлинга стоп-лосса. |
| 0- dont open trades on friday, 1- Trade on friday (TradeFriday) | Переключатель торговли в пятницу: 0 — торговля в пятницу запрещена, 1 — торговля в пятницу разрешена. |
| DontReverse | Переключатель разворота: при значении 1 запрещает автоматический разворот позиции после закрытия ордера в течение дня. |
| StartYear | Год начала действия советника (торговля не осуществляется до указанной даты). |
| StartMonth | Месяц начала действия советника (торговля не осуществляется до указанной даты). |
| TradesSet | Количество ордеров в наборе (по умолчанию 2 — по одному на каждую сторону). |
| 0 = NONE, 1 = SELL, 2 = BUY (TypeSet) | Тип набора ордеров: 0 — нет ограничений, 1 — только продажа, 2 — только покупка. |
| 0=False, 1=True (ReverseSet) | Переключатель разворота: при значении 1 разрешает автоматический разворот позиции после закрытия ордера в течение дня. |
Поиск по коду файла
#include <stdlib.mqh>
extern int MAGICNUM=1;
extern double Lots = 0.1;
extern int StopLoss = 55;
extern int TakeProfit = 100;
extern int TrailingStop = 0;
extern int slippage = 3;
extern double MaximumRisk = 7.0;
extern double MaxLot = 100.0;
extern double MinLot = 1.0;
extern bool FixedLot = true;
extern int TimeZoneOfData=0; // NY 7,15;
extern int StartHour=2; // 9:00 PM EST
extern int StartMinute=0;
extern int EndHour=23;
extern int EndMinute=0;
extern int FridayEndHour=21;
extern int SecureProfit=10;
extern int TrailSecureProfit=16;
extern int TradeFriday=1; // 0- dont open trades on friday, 1- Trade on friday
extern int DontReverse=1;
extern int StartYear=2005;
extern int StartMonth=6;
extern int TradesSet=2;
extern int TypeSet=0; // 0 = NONE, 1 = SELL, 2 = BUY
extern int ReverseSet=0; // 0=False, 1=True
int Today, RefDate, LastBarOfDay, FirstBarOfDay, Loop;
double pre_lo, pre_hi, myC, myO, lotsi;
int Cnt;
int OpenTrades, FilledOrders;
double BuyPrice, SellPrice;
int TimetoOpen, TimetoClose, tmp, i;
int Trades=2; string Type="NONE"; bool Reverse=False;
int mode,tr;
int myEndHour, myFridayEndHour, myStartHour;
bool FirstTime=True;
double range;
double hi_pass;
double lo_pass;
double MP;
double er_hi;
double er_lo;
double erange,erange2;
double r3;
double diffs,diffb;
int res; bool bres;
int start() {
// код доступен только после оплаты
}
if (TimeYear(Time[0])<StartYear) return;
lotsi=LotsRisk(StopLoss);
if (FirstTime) {
if (TradesSet!=2 || TypeSet!=0 || ReverseSet!=0) {
Trades = TradesSet;
if (TypeSet == 0) Type = "NONE";
if (TypeSet == 1) Type = "SELL";
if (TypeSet == 2) Type = "BUY";
if (ReverseSet ==0) Reverse = False;
if (ReverseSet ==1) Reverse = True;
}
FirstTime=False;
}
Today=MathFloor(CurTime()/86400)*86400;
Cnt=1;
if (Today!=RefDate) {
RefDate=Today;
while ( Cnt<(Bars-1) && (Time[Cnt]-TimeZoneOfData*3600>=RefDate) ) {
Cnt++;
}
LastBarOfDay=Cnt;
if (DayOfWeek()==1) RefDate=Today-86400*3;
else RefDate=Today-86400;
while ( Cnt<(Bars-1) && (Time[Cnt]-TimeZoneOfData*3600>=RefDate) ) {
Cnt++;
}
FirstBarOfDay=Cnt-1;
}
pre_hi=High[Highest(NULL,0,MODE_HIGH,FirstBarOfDay-LastBarOfDay+1,LastBarOfDay)];
pre_lo=Low[Lowest(NULL,0,MODE_LOW,FirstBarOfDay-LastBarOfDay+1,LastBarOfDay)];
myC=Close[LastBarOfDay];
hi_pass = pre_hi + 0.002 ;
lo_pass = pre_lo - 0.002 ;
MP = (((pre_hi - pre_lo) / 2.0) + pre_lo);
MP = NormalizeDouble(MP,Digits);
hi_pass = NormalizeDouble(hi_pass,Digits);
lo_pass = NormalizeDouble(lo_pass,Digits);
erange = (pre_hi - pre_lo);
if (erange <= 0.016)
r3 = 0.004;
else
r3 = erange * 0.25;
er_hi = (pre_hi - r3);
er_lo = (pre_lo + r3);
erange2= (er_hi - er_lo)*10000.0;
if (erange <= 0.008) {
ObjectDelete("LT80_txt");
ObjectCreate("LT80_txt",OBJ_TEXT,0,Time[35],MP);
ObjectSetText("LT80_txt","RANGE<80 ",10,"Arial",White);
}
ObjectDelete("MP");
ObjectCreate("MP", OBJ_HLINE,0,Time[25],MP);
ObjectSetText("MP","MP Range ",8,"Arial",White);
ObjectSet("MP",OBJPROP_COLOR,Blue);
ObjectSet("MP",OBJPROP_STYLE,STYLE_DOT);
ObjectDelete("ER_Hi");
ObjectCreate("ER_Hi", OBJ_HLINE,0,Time[25],er_hi);
ObjectSetText("ER_Hi","Below Here BUYZONE ->MP ",8,"Arial",White);
ObjectSet("ER_Hi",OBJPROP_COLOR,Green);
ObjectSet("ER_Hi",OBJPROP_STYLE,STYLE_DASH);
ObjectDelete("ER_Lo");
ObjectCreate("ER_Lo", OBJ_HLINE,0,Time[25],er_lo);
ObjectSetText("ER_Lo","Above Here SELLZONE ->MP ",8,"Arial",White);
ObjectSet("ER_Lo",OBJPROP_COLOR,Red);
ObjectSet("ER_Lo",OBJPROP_STYLE,STYLE_DASH);
ObjectDelete("Hi_Pass");
ObjectCreate("Hi_Pass", OBJ_HLINE,0,Time[25],hi_pass);
ObjectSetText("Hi_Pass","HiPASS ",8,"Arial",White);
ObjectSet("Hi_Pass",OBJPROP_COLOR,Green);
ObjectSet("Hi_Pass",OBJPROP_STYLE,STYLE_DOT);
ObjectDelete("Lo_Pass");
ObjectCreate("Lo_Pass", OBJ_HLINE,0,Time[25],lo_pass);
ObjectSetText("Lo_Pass","LoPASS ",8,"Arial",White);
ObjectSet("Lo_Pass",OBJPROP_COLOR,Red);
ObjectSet("Lo_Pass",OBJPROP_STYLE,STYLE_DOT);
ObjectDelete("Pre_Hi");
ObjectCreate("Pre_Hi", OBJ_HLINE,0,Time[25],pre_hi);
ObjectSetText("Pre_Hi","PreHI ",8,"Arial",White);
ObjectSet("Pre_Hi",OBJPROP_COLOR,Blue);
ObjectSet("Pre_Hi",OBJPROP_STYLE,STYLE_DASH);
ObjectDelete("Pre_Lo");
ObjectCreate("Pre_Lo", OBJ_HLINE,0,Time[25],pre_lo);
ObjectSetText("Pre_Lo","PreLO ",8,"Arial",White);
ObjectSet("Pre_Lo",OBJPROP_COLOR,Blue);
ObjectSet("Pre_Lo",OBJPROP_STYLE,STYLE_DASH);
if ( (Ask > MP) && (Ask < er_hi) ) {
Comment("Entry Price In BUYZONE");
} else {
if ( (Bid < MP) && (Bid > er_lo) ) {
Comment("Entry Price In SELLZONE");
}
}
OpenTrades=0;
for (Cnt=0; Cnt<OrdersTotal(); Cnt++) {
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
OpenTrades++;
if (OrderType()==OP_SELL || OrderType()==OP_BUY)
FilledOrders++;
}
}
Cnt=0;
i=TimeZoneOfData;
while (Cnt<=EndHour) {
if (i>23) i=0;
myEndHour=i;
i++;
Cnt++;
}
myFridayEndHour=FridayEndHour;
if ( (Hour()==myEndHour && Minute()>=EndMinute) || (DayOfWeek()==6 && Hour()==myFridayEndHour && Minute()>=EndMinute) ) {
for (Cnt=OrdersTotal()-1; Cnt>=0; Cnt--) {
if (!OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if ( OrderSymbol()==Symbol() ) {
mode = OrderType();
Trades=2;
Type="NONE";
Reverse=False;
tr=0; while (tr<5 && !IsTradeAllowed()) { tr++; Sleep(5000); }
if (mode == OP_BUYSTOP) bres=OrderDelete(OrderTicket());
if (mode == OP_SELLSTOP) bres=OrderDelete(OrderTicket());
if (mode == OP_BUYLIMIT) bres=OrderDelete(OrderTicket());
if (mode == OP_SELLLIMIT) bres=OrderDelete(OrderTicket());
if (mode == OP_BUY) bres=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); //CloseOrder(ord(cnt,VAL_TICKET),ord(cnt,VAL_LOTS),bid,Slippage,Blue);
if (mode == OP_SELL) bres=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),slippage,Blue); //CloseOrder(ord(cnt,VAL_TICKET),ord(cnt,VAL_LOTS),ask,Slippage,red);
if (!bres) Print("Error closing or deleting order : ",ErrorDescription(GetLastError()));
}
}
}
Cnt=0;
i=TimeZoneOfData;
while (Cnt<=StartHour) {
if (i>23) i=0;
myStartHour=i;
i++;
Cnt++;
}
if (TradeFriday ==1 || DayOfWeek()!=5) {
if (Hour()==myStartHour && Minute()>=StartMinute) {
if (OpПоказано первые 50% кода (символов: 10178)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.