This script is designed to provide traders with a structured set of visual levels on their charts to help identify potential entry points and risk management zones. Instead of providing automated signals, it serves as a technical framework where the trader applies their own rules and strategies.
Core Logic and Visualization
The primary function of the script is to calculate four specific price levels based on historical data from the Daily timeframe. These levels are recalculated every day at midnight:
- Break A & Break B: These represent "breakout" zones calculated using the difference between the opening and closing prices over the previous five days, weighted by specific mathematical ratios.
- Stop H & Stop L: These represent "stop" zones based on the high and low ranges of the price action over the previous five days, also adjusted with weighted averages.
By visualizing these lines, the script helps a trader see where the market might experience significant shifts or where it might be considered "overextended" relative to recent history.
Trading Methodology
The script is built around a specific logic for entering and managing trades:
For Long Positions (Buying):
- Entry: A trade is initiated when a candle closes between the Break A line and the Stop L level.
- Risk Management: The initial safety net (Stop-Loss) is typically placed at the daily opening price.
- Dynamic Adjustment: Once the price moves significantly in favor of the trade (specifically by 20 pips), the safety net is moved to Break A. As the trend continues, the trader can further move this safety net to the nearest significant price levels (like Pivot points or previous highs/lows) as long as the price maintains a specific buffer.
For Short Positions (Selling):
- Entry: A trade is initiated when a candle closes between the Break B line and the Stop L level.
- Risk Management: The safety net is placed at either the daily opening or the Break A line.
- Dynamic Adjustment: Similar to long positions, once 20 pips of profit are achieved, the safety net is moved to Break B, with further adjustments made as the price trends downward.
Strategy Considerations
- Timeframes: While the script can be used on various timeframes (like 1-hour or 4-hour charts), it is primarily designed for use on hourly charts while calculating data from daily periods.
- Safety Zones: The logic includes a "Special Stop" rule: if the price range becomes too wide (exceeding 40 pips), the script suggests switching which specific break level is used for protection to account for higher volatility.
- Execution: The strategy emphasizes entering trades only upon the confirmed closing of a candle, rather than reacting to flickering prices during the live movement of a bar.
//+------------------------------------------------------------------+
//| JL-Lines.mq4 |
//+------------------------------------------------------------------+
/*http://www.kroufr.ru/forum/index.php?PHPSESSID=4dd2e6b4e6ae4fa1b491b38e49a2f99c&topic=3180.0
Êàê òîðãîâàòü ïî JL-ëèíèÿì?
Òåïåðü âû íàíåñëè íà ãðàôèê ëèíèè è ìîæåòå òîðãîâàòü ïî íèì.
ß òîëüêî îïèøó, ìîþ ìåòîäèêó òîðãîâëè, âû ìîæåòå âûáðàòü ñâîþ òàêòèêó è ñâîè ïðàâèëà.
ß èñïîëüçóþ ÷àñîâûå ãðàôèêè, òàêæå âîçìîæíî èñïîëüçîâàòü 4-÷àñîâûå, 30-ìèíóòíûå, 15-ìèíóòíûå è òàê äàëåå. Ïîìíèòå, îäíàêî, ÷òî ÷åì ìåíüøå âðåìåííîé äèàïàçîí, òåì ìåíüøå åãî âàæíîñòü äëÿ èñïîëüçîâàíèÿ.
Ñäåëêè îòêðûâàþòñÿ ïðè çàêðûòèè áàðà, íå ïåðåä çàêðûòèåì. Íà ìîèõ ãðàôèêàõ òàêæå èñïîëüçóþòñÿ ïèâîòû, â÷åðàøíèå ìàêñèìóìû è ìèíèìóìû è ëèíèè òóííåëåé Âåãàñà. Ýòî äîïîëíèòåëüíûå èíñòðóìåíòû, êîòîðûå âû òàêæå ìîæåòå ïðè æåëàíèè èñïîëüçîâàòü.
Äëÿ íåêîòîðûõ èç âàñ ìîé ñòîï-ëîññ ìîæåò ïîêàçàòüñÿ ñëèøêîì æåñòêèì, âû ìîæåòå èñïîëüçîâàòü ñâîé ñòîï-ëîññ. Ëè÷íî ÿ ïðåäïî÷èòàþ â òå÷åíèè ïÿòè äíåé íåñòè íåáîëüøèå óáûòêè, à çàòåì êîìïåíñèðîâàòü èõ áîëüøîé ïðèáûëüþ. Ïðè èñïîëüçîâàíèè ýòîé ñòðàòåãèè áîëüøèå ïîñëåäîâàòåëüíîñòè óáûòî÷íûõ äíåé ìíå íå âñòðå÷àëèñü.
Çà ïîñëåäíèå ïÿòü íåäåëü ìîÿ ïðèáûëü ïðè ðàáîòå ïî ñèñòåìå ñîñòàâèëà 843 ïèïñà. ß òîðãóþ ïî ïàðå ôóíò/äîëëàð.
Ïðàâèëà äëÿ äëèííûõ ïîçèöèé.
Äëèííàÿ ïîçèöèÿ îòêðûâàåòñÿ, åñëè ñâå÷à çàêðûâàåòñÿ ìåæäó ëèíèåé Ïðîáîÿ À óðîâíåì ñòîïà Í.
Ñòîï-ëîññ ðàçìåùàåòñÿ íà óðîâíå äíåâíîãî îòêðûòèÿ. Âû ìîæåòå ðàçìåñòèòü ñòîï-ëîññ íà óðîâíå ïðîáîÿ Â.
Êîãäà ìîÿ ïðèáûëü ñîñòàâëÿåò 20 ïèïñîâ, ÿ ñäâèãàþ ñòîï-ëîññ íà óðîâåíü Ïðîáîÿ À.
Åñëè öåíà ïðîäîëæàåò äâèãàòüñÿ â ìîåì íàïðàâëåíèè, ÿ ñäâèãàþ ñòîï-ëîññ íà áëèæàéøóþ ëèíèþ (JL, ïèâîò, ëèíèè ìàêñèìóìîâ è ìèíèìóìîâ èëè Âåãåñà), åñëè öåíà íàõîäèòñÿ íà 30 ïèïñîâ âûøå ýòîé ëèíèè.
Ïîçèöèÿ íå îòêðûâàåòñÿ, åñëè ñâå÷à îòêðûâàåòñÿ ïîä ëèíèåé Ïðîáîÿ À è çàêðûâàåòñÿ íàä óðîâíåì ñòîïà Í.
Ïðàâèëà äëÿ êîðîòêèõ ïîçèöèé.
Êîðîòêàÿ ïîçèöèÿ îòêðûâàåòñÿ, êîãäà ñâå÷à çàêðûâàåòñÿ ìåæäó ëèíèåé Ïðîáîÿ  è ñòîïîì L.
Ñòîï-ëîññ ðàçìåùàåòñÿ íà óðîâíå äíåâíîãî îòêðûòèÿ èëè íà ëèíèè Ïðîáîÿ À.
Ïðè ïîëó÷åíèè ïðèáûëè 20 ïèïñîâ, ÿ ñäâèãàþ ñòîï-ëîññ íà óðîâåíü ïðîáîÿ Â.
Åñëè öåíà ïðîäîëæàåò äâèãàòüñÿ â ìîþ ñòîðîíó, ÿ ñäâèãàþ ñòîï-ëîññ íà áëèæàéøóþ ëèíèþ, åñëè öåíà íàõîäèòñÿ íà 30 ïèïñîâ íèæå åå.
Ñäåëêà íå îòêðûâàåòñÿ, åñëè ñâå÷à îòêðûëàñü âûøå óðîâíÿ Ïðîáîÿ Â, çàêðûâøèñü íèæå Ñòîïà L.
Ñïåöèàëüíûé ñòîï-ëîññ.
Åñëè êàíàë óæå 40 ïèïñîâ, ïðè îòêðûòèè äëèííîé ïîçèöèè â êà÷åñòâå óðîâíÿ ñòîï-ëîññà èñïîëüçóåòñÿ óðîâåíü Ïðîáîÿ Â. Ïðè îòêðûòèè êîðîòêîé ïîçèöèè â êà÷åñòâå ñòîï-ëîññà èñïîëüçóåòñÿ óðîâåíü Ïðîáîÿ À.
Òàéì-ôðåéìû.
Òàêòèêà ðàáîòàåò òàêæå ñ íåäåëüíûìè è ìåñÿ÷íûìè ãðàôèêàìè, íî âàø ñòîï-ëîññ ïðè ýòîì áóäåò íàìíîãî áîëüøå. Åñëè âû èñïîëüçóåòå íåäåëüíûé ãðàôèê, òî âàì íàäî ðàññ÷èòàòü íåäåëüíûå äèàïàçîíû îò îòêðûòèÿ äî çàêðûòèÿ è îò ìàêñèìóìà äî ìèíèìóìà, êàê ýòî áûëî îïèñàíî âûøå. Ïîñëå ýòîãî âàì íåîáõîäèìî îòêðûòü ïîçèöèè íà äíåâíîì èëè 4-÷àñîâîì ãðàôèêå.
Ñîîòâåòñòâåííî ïðè âû÷èñëåíèè ëèíèé ïî ìåñÿ÷íîìó ãðàôèêó, âû îòêðûâàåòå ïîçèöèè íà íåäåëüíîì èëè äíåâíîì äèàïàçîíàõ.
ß íèêîãäà íå òîðãîâàë íà ýòèõ òàéì-ôðåéìàõ, ïîñêîëüêó íå ìîãó ïîçâîëèòü ñåáå òàêîãî áîëüøîãî ñòîï-ëîññà.
Ìîÿ ðåêîìåíäàöèÿ: âûñ÷èòûâàòü ëèíèè ïî äíåâíûì ãðàôèêàì è îòêðûâàòü ïîçèöèè ïî ÷àñîâûì.
*/
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 LightSkyBlue
#property indicator_color2 Tomato
#property indicator_color3 Blue
#property indicator_color4 Red
//---- buffers
double BreakA[],
BreakB[],
StopH[],
StopL[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
IndicatorShortName("JL-Lines");
//---- indicators
SetIndexLabel (0,"Break A");
SetIndexStyle (0,DRAW_LINE);
SetIndexBuffer(0,BreakA);
SetIndexLabel (1,"Break B");
SetIndexStyle (1,DRAW_LINE);
SetIndexBuffer(1,BreakB);
SetIndexLabel (2,"Stop H");
SetIndexStyle (2,DRAW_LINE);
SetIndexBuffer(2,StopH);
SetIndexLabel (3,"Stop L");
SetIndexStyle (3,DRAW_LINE);
SetIndexBuffer(3,StopL);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
//----
for (int i = Bars-IndicatorCounted(); i >= 0; i--)
{
if(TimeHour(iTime(NULL,0,i)) != 0)
{
BreakA[i] = BreakA[i+1];
BreakB[i] = BreakB[i+1];
StopH [i] = StopH [i+1];
StopL [i] = StopL [i+1];
continue;
}
int candlesPerDay = PERIOD_D1/Period(),
day = MathFloor(i/candlesPerDay);
double channel1 = 0.0,
channel2 = 0.0;
channel1 += 1.000*MathAbs(iOpen(NULL,PERIOD_D1,day+1)-iClose(NULL,PERIOD_D1,day+1));
channel1 += 0.618*MathAbs(iOpen(NULL,PERIOD_D1,day+2)-iClose(NULL,PERIOD_D1,day+2));
channel1 += 0.500*MathAbs(iOpen(NULL,PERIOD_D1,day+3)-iClose(NULL,PERIOD_D1,day+3));
channel1 += 0.382*MathAbs(iOpen(NULL,PERIOD_D1,day+4)-iClose(NULL,PERIOD_D1,day+4));
channel1 += 0.236*MathAbs(iOpen(NULL,PERIOD_D1,day+5)-iClose(NULL,PERIOD_D1,day+5));
channel2 += 1.000*(iHigh(NULL,PERIOD_D1,day+1)-iLow(NULL,PERIOD_D1,day+1));
channel2 += 0.618*(iHigh(NULL,PERIOD_D1,day+2)-iLow(NULL,PERIOD_D1,day+2));
channel2 += 0.500*(iHigh(NULL,PERIOD_D1,day+3)-iLow(NULL,PERIOD_D1,day+3));
channel2 += 0.382*(iHigh(NULL,PERIOD_D1,day+4)-iLow(NULL,PERIOD_D1,day+4));
channel2 += 0.236*(iHigh(NULL,PERIOD_D1,day+5)-iLow(NULL,PERIOD_D1,day+5));
channel1 /= 5.0;
channel2 /= 5.0;
double open = iOpen(NULL,PERIOD_D1,day);
BreakA[i] = open+0.5*channel1;
BreakB[i] = open-0.5*channel1;
StopH[i] = open+0.5*channel2;
StopL[i] = open-0.5*channel2;
Comment("JL-Lines: "+DoubleToStr(channel1/Point,0)+", "+DoubleToStr(channel2/Point,0));
}
//----
return(0);
}
//+------------------------------------------------------------------+
Comments