PDA

Zobacz pełną wersję : Zamów logikę otwarcia i najlepsze praktyki



paitu97
03-09-2009 03:46, 03:46
Potrzebuję pomocy w prawidłowym ustawieniu logiki w celu otwarcia zamówienia .... Jaka jest najlepsza praktyka, aby otworzyć zamówienie, jeśli cena spadnie na linię? (również z Slippage)
=============================

Zmienne do otwierania zamówień:
Wstawiony kod int i;/Indeks prętów int Counted_bars;/Liczba zliczonych słupków Counted_bars = IndiorCounted ();/Liczba zliczonych słupków i = Bars-Counted_bars-1;/Indeks pierwszego niezliczonego while (igt; = 0)/Pętla dla niezliczonych słupków {double MA_Line = iCustom (NULL, przedział czasu, MA StdDev, MA_Period, 1, 6, 0, 0, i); double S_Line1 = iCustom (NULL, przedział czasowy, MA StdDev, MA_Period, 1, 6, 0, 1, i); double S_Line2 = iCustom (NULL, przedział czasowy, MA StdDev, MA_Period, 1, 6, 0, 2, i); double S_Line3 = iCustom (NULL, przedział czasowy, MA StdDev, MA_Period, 1, 6, 0, 3, i); double S_Line4 = iCustom (NULL, przedział czasowy, MA StdDev, MA_Period, 1, 6, 0, 4, i); double U_StopLoss = iCustom (NULL, przedział czasowy, MA StdDev, MA_Period, 1, 6, 0, 5, i); double L_StopLoss = iCustom (NULL, przedział czasowy, MA-StdDev, MA_Period, 1, 6, 0, 5, i); double B_Line1 = iCustom (NULL, przedział czasowy, MA-StdDev, MA_Period, 1, 6, 0, 1, i); double B_Line2 = iCustom (NULL, przedział czasowy, MA-StdDev, MA_Period, 1, 6, 0, 2, i); double B_Line3 = iCustom (NULL, przedział czasowy, MA-StdDev, MA_Period, 1, 6, 0, 3, i); double B_Line4 = iCustom (NULL, przedział czasowy, MA-StdDev, MA_Period, 1, 6, 0, 4, i); double StochBuyLine = iStochastic (Symbol (), 0,14,3,3,1,1,0, i); double StochSellLine = iStochastic (Symbol (), 0,14,3,3,1,1,1, i); ja--; }
Logika wymagająca przeglądu i porady:

Wstawiony kod, jeśli (Zbywalny) jeszcze się zepsuł; jeśli CurrentPrice lt; MA_Line {if StochBuyLinegt; StochSellLine StochBuyLinelt = 10 CurrentPrice = B_Line4 {OpenBuyOrder @ Line4LotSize} else jeśli StochBuyLinegt; StochSellLine StochBuyLinelt = 10 CurrentPrice = B_Line3 {OpenBuyOrder @ Line3LotSize} else jeśli StochBuyLinegt; StochSellLine StochBuyLinelt = 10 CurrentPrice = B_Line2 {OpenBuyOrder @ Line2LotSize} else jeśli StochBuyLinegt; StochSellLine StochBuyLinelt = 10 CurrentPrice = B_Line1 {OpenBuyOrder @ Line1LotSize}} else {if StochSellLinegt; StochBuyLine StochSellLinegt = 90 CurrentPrice = B_Line4 {OpenBuyOrder @ Line4LotSize} else jeśli StochSellLine StochSellLinegt = 90 CurrentPrice = B_Line3 {OpenBuyOrder @ Line3LotSize} Inaczej jeśli StochSellLinegt; StochBuyLine StochSellLinegt; = 90 CurrentPrice = B_Line2 {OpenBuyOrder @ Line2LotSize} Inaczej jeśli StochSell Linegt; StochBuyLine StochSellLinegt; = 90 CurrentPrice = B_Line1 {OpenBuyOrder @ Line1LotSize} # 91; czcionka = quot # 93;} # 91;font # 93;

Burespearc91
12-09-2021 23:47, 23:47
Kilka rzeczy: 1. Jeśli ten pierwszy blok kodu pochodzi z EA. Pozbądź się pętli while. To nie jest potrzebne. Albo przypisz i = 0 dla bieżącego paska, albo i = 1 dla poprzedniego paska. Nie musisz się cofać w czasie, ponieważ twój EA naprawdę nie obchodzi, co się stało 3000 barów temu. 2. Gdzie masz currentprice = B_Line4 (i reszta) znak single = jest operatorem przypisania. Aby sprawdzić równość, potrzebujesz dwóch znaków ==. 3. Na tym samym przedmiocie jest bardzo mało prawdopodobne, że cena będzie dokładnie taka sama jak wartość dla twoich linii. Jeśli linia ma wartość 123.4554332, a cena jest równa 123,45, mt4 uzna je za nie równe. Użyj NormalizeDouble lub sprawdź, czy cena przekroczyła linię. 4. Sprawdź kody błędów za pomocą funkcji ordersend. ordersend zwróci liczbę całkowitą. 5. Slippage należy do Ciebie. Ale mogę zagwarantować, że to, co działa w wersji demonstracyjnej, niekoniecznie będzie działać na żywo. Dlatego sprawdzaj kody błędów za pomocą funkcji ordersend. Czasami musisz uderzyć serwer 2-3 razy, zanim przyjmie on zamówienie.

paitu97
12-10-2021 01:08, 01:08
Użyj NormalizeDouble lub sprawdź, czy cena przekroczyła linię. Czy możesz pokazać mi przykład sprawdzenia krzyżowego? ... chociaż wolałbym logikę, aby spróbować ją zdobyć, póki nie trafi w linię ... więc myślę, że NormalizeDouble powinien być taki, jak ja to robię

Burespearc91
12-10-2021 02:28, 02:28
jeśli szukasz przejścia przez przejście w górę ..... jeśli (Otwórz [0] lt; linia Zamknij [0] gt; = linia) przekroczyła dół, jeśli (Otwórz [0] gt; line Close [0] lt; = linia) przekreślona

paitu97
12-10-2021 03:49, 03:49
Mam ... co zwykle jest najlepszą praktyką? uderzanie w linię lub przejście?

Burespearc91
12-10-2021 05:10, 05:10
Mam ... co zwykle jest najlepszą praktyką? uderzanie w linię lub przejście?
Zrobiłbym krzyż. Czasami cena skacze o 2 pipsy lub więcej i po prostu przeskakuje ponad równowagę. Możesz sprawdzić przekierowanie, a następnie upewnić się, że cena mieści się w granicach 1-2 pipsów linii.

paitu97
12-10-2021 06:31, 06:31
więc czy mogę zrobić coś takiego? Wstawiony kod, jeśli line4tradeslt; 1 StochBuyLinegt; StochSellLine StochBuyLinelt; = 10 CurrentPrice = = B_Line4 ((Otwórz # 91; 0 # 93; lt; wiersz Zamknij # 91; 0 # 93; gt; = wiersz) || (Otwórz # 91; 0 # 93; gt; linia Zamknij # 91; 0 # 93; lt; = linia))

paitu97
12-10-2021 07:51, 07:51
Wygląda na to, że moja ostatnia odpowiedź na to prześlizgnęła się przez szczeliny