Zliczanie wielu zamówień z wieloma numerami magicznymi w jednym EA
Pokaż wyniki od 1 do 6 z 6

Wątek: Zliczanie wielu zamówień z wieloma numerami magicznymi w jednym EA

  1. #1
    OK, więc udało mi się stworzyć EA, które może obsługiwać jednocześnie moduły o różnych parametrach handlowych, które mogą być uruchamiane w tym samym czasie lub włączane i wyłączane. Chociaż wpadam na ścianę z obsługą zamówień.

    Chcę mieć licznik EA MaxTotalPositions względem Total Positions dla ModuleA i Total Positions dla ModuleB. EA nie może przekroczyć Max Total (A = B), ale również nie może przekroczyć odpowiednio TotalforModuleA i B. Na przykład, jeśli MaxTotal wynosi 2, a suma modułów A i B wynosi jeden, to nie może przekroczyć 2. Ta część jest łatwa. Jednakże, jeśli Max wynosi 2, a ModuleA to 1, to nadal handluje się do 2. Próbowałem wywoływać zamówienia za pomocą magii, aby ułatwić liczyć, ale gdzieś jest to przekroczenie MaxPerModule. Czy ktoś ma jakiś pomysł, jak do tego podejść? Kod kompiluje się poprawnie, więc nie ma błędów w składni. Oto część kodu:

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////

    TotalMaxPositions jest deklarowany globalnie u góry EA jako zmienna zewnętrzna

    extern double TotalMaxPositions = 2;

    //////////////////////////////////////////////////////////////////////////////////////////////////////////

    //------------------------------------------------ -
    //MAKSYMALNE POZYCJE ZAMÓWIENIA
    //------------------------------------------------ -

    int TotalCurrentOrders;
    int count = 0; int count = 0; int całkowity; int totalB;

    TotalCurrentOrders = OrdersTotal ();
    if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);

    jeszcze

    if (TotalCurrentOrders lt; TotalMaxPositions)

    {

    if (countA gt; = MaxPosesA) return (0);
    if (countA lt; MaxPositionsA)
    for (int posA = 0; posA lt; totalA; posA )
    {
    if (OrderSelect (posA, SELECT_BY_POS) == false) kontynuuj;
    if (OrderMagicNumber () == MagicA) countA ;
    }

    if (countB gt; = MaxPositionsB) return (0);
    if (countB lt; MaxPositionsB)
    for (int posB = 0; posB lt; totalB; posB )
    {
    if (OrderSelect (posB, SELECT_BY_POS) == false) kontynuuj;
    if (OrderMagicNumber () == MagicB) countB ;
    }

    if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);

    }

  2. #2

    Cytat Zamieszczone przez ;
    OK, więc udało mi się stworzyć EA, które może obsługiwać jednocześnie moduły o różnych parametrach handlowych, które mogą być uruchamiane w tym samym czasie lub włączane i wyłączane. Chociaż wpadam na ścianę z obsługą zamówień. Chcę mieć licznik EA MaxTotalPositions względem Total Positions dla ModuleA i Total Positions dla ModuleB. EA nie może przekroczyć Max Total (A = B), ale również nie może przekroczyć odpowiednio TotalforModuleA i B. Na przykład, jeśli MaxTotal wynosi 2, a suma modułów A i B wynosi jeden, to nie może przekroczyć 2. To ...
    Dlaczego to jest podwójne? Wstawiony kod extern double TotalMaxPositions = 2; jeśli spróbujesz porównać int z podwójnym, możesz stwierdzić, że nigdy nie jest ono równe, nawet jeśli jest. . .

  3. #3

    Cytat Zamieszczone przez ;
    TotalCurrentOrders = OrdersTotal (); if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);
    Następnie
    Cytat Zamieszczone przez ;
    else if (TotalCurrentOrders lt; TotalMaxPositions)
    Następnie masz kod, który trochę policzy, ale wydaje się, że nic nie robi z wynikiem, po którym następuje
    Cytat Zamieszczone przez ;
    if (TotalCurrentOrders gt; = TotalMaxPositions) return (0);
    które zostały już sprawdzone (pierwsze cytaty) i znane jako fałszywe, w przeciwnym razie ELSE nie zostałoby przeprowadzone. W kodzie nie ma nic, co mogłoby zmienić wartości TotalCurrentOrders lub TotalMaxPositions.

  4. #4

    Cytat Zamieszczone przez ;
    {quote} Dlaczego to jest podwójne? extern double TotalMaxPositions = 2; jeśli spróbujesz porównać int z podwójnym, możesz stwierdzić, że nigdy nie jest ono równe, nawet jeśli jest. . .
    To podwójne, ponieważ byłem zbyt leniwy, aby to zmienić. Domyślnie wszystkie moje wersje zewnętrzne są podwójne, a następnie zmieniam je, jeśli się nie kompilują. Właśnie ukończyłem te kilka EA w EA koncepcji EA i zostawiłem miejsce dla ponad 10 zmiennych plus SL TP i wyłączanie i wyłączanie. Teraz szaleję z moimi egipami w jednym EA. Łatwiej mi przetestować pomysły w ten sposób. Dzięki za twój wkład w ostatnim wątku EA, z twoją odpowiedzią, możesz całkiem mieć EA zrobić cokolwiek wziąłem twoje słowo dla tego i poszedłem dla tego. Będę pamiętał o twoim komentarzu na temat podwójnego kontra int, a nawet przetestowania go, ale myślę, że odpowiedź Gumry na nie dodawanie lub odejmowanie TotalOrders na każdym Module może być tym, na co muszę zwrócić uwagę.

  5. #5

    Cytat Zamieszczone przez ;
    {quote} Następnie {quote} Nic w kodzie nie zmienia wartości TotalCurrentOrders ani TotalMaxPositions.
    Dzięki to ma sens. Przyjrzę się temu. Zakładam, że robię to w taki sam sposób jak dla (int posB = 0; posB lt; totalB; posB ) {if (OrderSelect (posB, SELECT_BY_POS) == false) continue; if (OrderMagicNumber () == MagicB) countB ; } Ale modyfikując wartości tego, czego potrzebuję do akomodacji. Kod jest trudniejszy, niż myślałem, ale * powinien * być w stanie działać ze zmianą logiki (przynajmniej tego mam nadzieję). Dzięki za sugestię, spróbuję z nią eksperymentować.

  6. #6
    Czy kiedykolwiek osiągnąłeś rezultat? Robię coś bardzo podobnego Mam 4 zamówienia BuyStopSellStop, które aktywują się w zależności od pewnych perametrów i mam indywidualne modyfikatory zamówień dla każdego zamówienia, które wydaje mi się, że nie zmodyfikują ich przez numer biletu (problem z użyciem tego jest taki, że za każdym razem modyfikujesz kolejność, w której zmienia się identyfikator biletu, który z kolei zabija zlecenie modyfikacji po raz drugi próbuje go zmienić, więc trzeba użyć liczb magicznych. Niech ta część EA działa dobrze, ale nie mogę wydawać się ograniczać ilości zamówień przez Magic Number na własną rękę Użyłem Iexpertadvisor VTS buildera, ponieważ jest to naprawdę łatwe do wizualizacji, co robisz i ma własny system do ograniczania zamówień, ale nie możesz dodać do niego wielu magicznych liczb. Nie wiesz, gdzie z tym skończyć. naprawdę .......... Również tworzenie i próbowanie sprawić, by był użyteczny w Iexpertadvisor VTS jest jeszcze trudniejszy.

Uprawnienia umieszczania postów

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Używamy cookies
Używamy cookies, aby jak najlepiej dostosować witrynę do Twoich potrzeb. Kontynuowanie przeglądania tej strony, oznacza zgodę na używanie plików cookies. Aby uzyskać więcej informacji zapoznaj się z naszą Polityką Prywatności.