1. Wstęp:
Jeśli byłeś zaangażowany w handel na rynku Forex przez jakiś czas, prawdopodobnie słyszałeś o Martingale. Ale co to jest i jak działa? W tym poście opowiem o strategii, jej mocnych stronach, ryzyku oraz o tym, jak najlepiej ją wykorzystać w prawdziwym świecie. Istnieje kilka powodów, dla których ta strategia jest atrakcyjna dla inwestorów walutowych.
Po pierwsze, pod pewnymi warunkami może dać przewidywalny wynik w postaci zysków. Nie jest to pewny zakład, ale jest tak blisko, jak tylko możesz.
Po drugie, nie polega na zdolności przewidywania bezwzględnego kierunku rynku. Jest to przydatne, biorąc pod uwagę dynamiczny i zmienny charakter walut obcych.
Przy wystarczająco głębokich kieszeniach może działać, gdy twoje umiejętności wybierania transakcji nie są lepsze niż przypadek. Chociaż ma znacznie lepszy wynik i mniejszą wypłatę, tym lepiej potrafisz przewidywać rynek.
Po trzecie, waluty mają tendencję do handlu w przedziałach przez długi czas - więc te same poziomy są wielokrotnie zmieniane. Podobnie jak w przypadku handlu siatkowego, takie zachowanie pasuje do tej strategii.
Martyngał to strategia uśredniania kosztów. Odbywa się to poprzez „podwajanie ekspozycji” na przegrane transakcje. Skutkuje to obniżeniem średniej ceny wejścia.
Ważne jest, aby wiedzieć o Martingale, że nie zwiększa on Twoich szans na wygraną. Twój długoterminowy oczekiwany zwrot jest nadal dokładnie taki sam. Zależy to od Twojego sukcesu w wybieraniu zwycięskich transakcji i odpowiedniego rynku. Nie możesz od tego uciec.
To, co robi strategia, to opóźnianie strat. W odpowiednich warunkach straty mogą być tak bardzo opóźnione, że wydaje się to pewne.
2. Jak to działa
W skrócie: Martingale to strategia uśredniania kosztów. Odbywa się to poprzez „podwajanie ekspozycji” na przegrane transakcje. Skutkuje to obniżeniem średniej ceny wejścia. Chodzi o to, że po prostu podwajasz wielkość transakcji, aż w końcu los wyrzuci cię jedną zwycięską transakcję. W tym momencie, dzięki efektowi podwojenia, możesz wyjść z zyskiem.
Jest to system Martingale z przypadkowym wpisem, możesz zaprogramować swój własny wpis tak, jak chcesz, aby uzyskać lepsze wyniki.
Skoncentrowałem się tylko na systemie martyngałów, nie tylko zwiększa się wielkość partii, ale także odległość take profit, dzięki czemu możesz wytrzymać kolejne straty.
Aby działało poprawnie ustaw historię konta w terminalu tak, aby pokazywała całą historię.
3. Parametry wejściowe:
Ustawienia Martingale:
sl_tp = 20; - stop loss i take profit w pipsach;
lotsMultiplier = 1,5; - mnożnik partii, jeśli transakcja zakończyła się stratą, następna wielkość partii będzie miała wartość lotsMultiplier razy większy;
odległość Mnożnik = 1,5; - mnożnik take profit i stop loss, po losowej transakcji odległość take profit to distanceMultiplier razy większa;
Partie = 0,03; - wielkość partii w pierwszej transakcji;
MaxSlippage = 3; - maksymalny dopuszczalny poślizg w pipsach;
magicNumber = 1212123; - specjalny numer, aby uniknąć kolizji z innymi transakcjami EA lub ręcznymi;
Godziny handlu:
useTradingHours = false; - jeśli to prawda, system otwiera transakcje tylko w określonym czasie;
StartTime = „06:00”; - czas rozpoczęcia handlu;
StopTime = „18:00”; - czas zakończenia handlu;
GMT_Offset = 0; - przesunięcie GMT;
Dni handlowe:
poniedziałek = prawda;
wtorek = prawda;
środa = prawda;
czwartek = prawda;
piątek = prawda;
sobota = prawda;
niedziela = prawda;
Ustawienia widoku:
showMenu = true; - jeśli prawda, EA pokazuje na wykresie informacje o otwartych transakcjach, lotach i zyskach;
menuKolor = niebieski; - kolor tekstu menu;
zmienneKolor = czerwony; - kolor zmiennych;
czcionka = 10; - rozmiar czcionki;
4. Użyj klocków kodu w ten sposób:
Jeśli podamy Ci kod, nie wiesz, jak zintegrować go z Twoim.
Chętnie pomożemy, kiedy opublikujesz swoją próbę (używając SRC) i opis Twojego problemu, ale nie będziemy debugować setek linii kodu. Zasadniczo będziesz sam.
Konstruktor EA generuje zły kod podczas zamykania wielu zamówień.
Konstruktor EA tworzy zły kod Słupki są niewiarygodne (maksymalne słupki na wykresie) głośność jest niewiarygodna (brak tików) Zawsze używaj czasu. Nowa świeca - forum MQL4
Konstruktor EA tworzy zły kod, nie dostosowując się do 4/5 cyfrowych brokerów, TP / SL i poślizgu.
Konstruktor EA tworzy zły kod, nie dostosowując się do brokerów ECN. (przed kompilacją 500)
Kreator EA tworzy zły kod, nie sprawdzając kodów zwrotnych.
EATree używa obiektów na wykresie do zapisywania wartości - nie jest to trwała pamięć (pliki lub GV + Flush). Brak odzyskiwania (awaria / awaria zasilania).
Naucz się go kodować lub zapłać (Freelance) komuś za zakodowanie.
Aby użyć martyngału, musisz mieć pewność, że nie poniesiesz wielu kolejnych strat z rzędu.
Tutaj jest 7 kolejnych strat na EURUSD H1, więc EA przestaje działać, ponieważ: za mało pieniędzy: błąd 134
Najlepszym przypadkiem dla martyngału jest 1 wygrana 1 przegrana lub maksymalnie 3/4 przegranej
// THIS EA CODE HAS BEEN GENERATED USING FOREXEADVISOR STRATEGY BUILDER 0.2
// on: 4/28/2019 4:02:45 PM
// Disclaimer: This EA is provided to you "AS-IS", and ForexEAdvisor disclaims any warranty
// or liability obligations to you of any kind.
// UNDER NO CIRCUMSTANCES WILL FOREXEADVISOR BE LIABLE TO YOU, OR ANY OTHER PERSON OR ENTITY,
// FOR ANY LOSS OF USE, REVENUE OR PROFIT, LOST OR DAMAGED DATA, OR OTHER COMMERCIAL OR
// ECONOMIC LOSS OR FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, STATUTORY, PUNITIVE,
// EXEMPLARY OR CONSEQUENTIAL DAMAGES WHATSOEVER RELATED TO YOUR USE OF THIS EA OR
// FOREXEADVISOR STRATEGY BUILDER
// Because software is inherently complex and may not be completely free of errors, you are
// advised to verify this EA. Before using this EA, please read the ForexEAdvisor Strategy Builder
// license for a complete understanding of ForexEAdvisor' disclaimers.
// USE THIS EA AT YOUR OWN RISK.
//
// Before adding this expert advisor to a chart, make sure there are NO
// open positions.
extern int MagicNumber=10001;
extern double Lots =0.1;
extern double StopLoss=50;
extern double TakeProfit=50;
extern int TrailingStop=50;
extern int Slippage=3;
double last_profit, last_lot;
int last_tip;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
int start()
{
double llots = 0.1;
if( OrdersTotal() == 0 && OrdersHistoryTotal() == 0) llots = Lots;
else if( OrdersTotal() == 0&& OrdersHistoryTotal() > 0 ) last_history_profit();
if( last_profit < 0 ) llots = 2*last_lot;
if( last_profit > 0 ) llots = Lots;
double MyPoint=Point;
if(Digits==3 || Digits==5) MyPoint=Point*10;
double TheStopLoss=0;
double TheTakeProfit=0;
if( TotalOrdersCount()==0 )
{
int result=0;
if((iRSI(NULL,0,14,PRICE_CLOSE,1)>50)&&(iRSI(NULL, 0,14,PRICE_CLOSE,0)>50)) // Here is your open buy rule
{
result=OrderSend(Symbol(),OP_BUY,llots,Ask,Slippag e,0,0,"EA Generator www.ForexEAdvisor.com",MagicNumber,0,Blue);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Ask+TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Ask-StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
}
return(0);
}
if((iRSI(NULL,0,14,PRICE_CLOSE,1)<50)&&(iRSI(NULL, 0,14,PRICE_CLOSE,0)<50)) // Here is your open Sell rule
{
result=OrderSend(Symbol(),OP_SELL,llots,Bid,Slippa ge,0,0, MagicNumber,0,Red);
if(result>0)
{
TheStopLoss=0;
TheTakeProfit=0;
if(TakeProfit>0) TheTakeProfit=Bid-TakeProfit*MyPoint;
if(StopLoss>0) TheStopLoss=Bid+StopLoss*MyPoint;
OrderSelect(result,SELECT_BY_TICKET);
OrderModify(OrderTicket(),OrderOpenPrice(),Normali zeDouble(TheStopLoss,Digits),NormalizeDouble(TheTa keProfit,Digits),0,Green);
}
return(0);
}
}
for(int cnt=0;cnt<OrdersTotal();cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL &&
OrderSymbol()==Symbol() &&
OrderMagicNumber()==MagicNumber
)
{
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>MyPoint*TrailingStop)
{
if(OrderStopLoss()<Bid-MyPoint*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*MyPoint,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else
{
if(TrailingStop>0)
double last_history_profit()
{
double cpte_profit = 0; //int Magik_No = -1;
if( OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY) )
{
if( OrderMagicNumber() == MagicNumber ) {
last_profit = OrderProfit();
last_lot = OrderLots();
last_tip = OrderType();
}
}
return(0);
}