Opracowanie strategii krok po kroku. Jak stworzyć strategię. Przygotowanie do pracy

Cześć wszystkim! Teraz powiem ci, jak zrobić prosty RTS (RTS - strategia czasu rzeczywistego, czyli strategia czasu rzeczywistego), otworzyć hamak 8.1 (w wersji 8.0 nie jest gwarantowana funkcjonalność) utworzyć obiekt objControl, czyli będzie to nasz główny obiekt, utwórz zdarzenie tworzenia ( Utwórz) Dodaj wydarzenie => Tworzenie (Dodaj wydarzenie => Utwórz) zdarzenie tworzenia odbywa się tylko raz - podczas tworzenia kliknij zakładkę kontrolną w prawym pionowym menu i kliknij prawym przyciskiem myszy Wykonaj code (Wykonaj kod) i napisz kod (najlepiej nie kopiować kodu, a samodzielne napisanie go znacznie ułatwia zapamiętanie):

200?"200px":""+(this.scrollHeight+5)+"px");">startx=0; //Zadeklaruj zmienną dla punktu początkowego x
start=0; //Zadeklaruj zmienną na początek punktu przez y
remis_rect=fałsz; //Nie rysuj prostokąta zaznaczenia


Zmienna: fragment pamięci zawierający informacje. Mają własną nazwę, pod którą można się z nimi skontaktować. Zmienne w GML mogą zawierać liczbę rzeczywistą lub ciąg znaków. Na przykład stół jest zmienną, drewno lub szkło jest wartością
Teraz tworzymy zdarzenie krokowe (Krok, Dodaj wydarzenie => Krok) i wykonujemy operację ponownie (kliknij prawym przyciskiem myszy na Wykonaj kod):

200?"200px":""+(this.scrollHeight+5)+"px");">
if Mouse_check_button_pressed(mb_left) //Jeśli naciśnięto LMB
{
remis_rect=true; //Rysujemy prostokąt
startx=mysz_x; //Początek x pozycja = mysz x pozycja
starty=mysz_y; //Pozycja początkowa = pozycja myszy
ze wszystkimi wybranymi = fałsz; //To nie jest jeszcze zadeklarowana zmienna, dowiemy się, co zrobi później
}

Jeśli mysz_check_button_released(mb_left) //Jeśli LMB zostanie zwolniony
{
remis_rect=fałsz; //Nie rysujemy prostokąta
dla (i=0;tj<=instance_number(par);i+=1) //Читайте про цикл for ниже
{
ii=znalezienie_instancji(par,i); //Szukamy obiektu, który nie został jeszcze wykonany
if(collision_rectangle(startx,starty,mouse_x,mouse_y,ii,true,false)) //Oto nasz prostokąt kolizyjny (kontakt)
{
ii.selected=true;
}
}
}

Kod jest duży i złożony, ale poznajemy instrukcję warunkową if:
Kod z if jest wykonywany w następujący sposób:

200?"200px":""+(this.scrollHeight+5)+"px");">
jeśli (warunek)
{
działanie
}

Może również zawierać instrukcję else (w przeciwnym razie), przykład:

200?"200px":""+(this.scrollHeight+5)+"px");">if (warunek)
{
działanie
}
w przeciwnym razie
{
akcja 2
}

A for jest operatorem pętli, jest on wykonywany w następujący sposób:

200?"200px":""+(this.scrollHeight+5)+"px");">
Do (<переменная> ; <выражение> ;<действие переменной>)
{
<действия>
}


Operator for jest bardzo potężną rzeczą, bardzo pomaga w trudnych sytuacjach

Operator - akcje wbudowane w język, np. najczęściej spotykane to int, if, else, string, switch, for, case, break, exit itp., itp.

Teraz tworzymy również zdarzenie rysunkowe (remis) i piszemy w ten sam sposób:

200?"200px":""+(this.scrollHeight+5)+"px");">if remis_rect=true
{
alfa=0,8;
Draw_rectangle_color(startx,starty,mouse_x,mouse_y,c_green,c_green,c_green,c_green,true);
}

Tutaj wszystko jest łatwe, tutaj jest to samo, tylko w języku rosyjskim:
jeśli musimy narysować prostokąt, wybieramy przezroczystość i rysujemy prostokąt
oto argumenty

200?"200px":""+(this.scrollHeight+5)+"px");">draw_rectangle_color(x1,y1,x2,y2,kolor 1, kolor 2, kolor 3, kolor 4, kontur)


zarys - czy rysowana będzie tylko krawędź (true), czy wypełniony prostokąt (false).
Znaleźliśmy nowe słowo - stała, jest to wyrażenie numeryczne lub kod zastąpiony słowem, hamak ma wbudowane stałe:

200?"200px":""+(this.scrollHeight+5)+"px");">true - 1
fałsz - 0
pi - 3,1415...


Cóż, rozpracowaliśmy to, teraz musimy stworzyć nowy obiekt - obiekt nadrzędny, który połączy się ze swoimi dziećmi. Nazwijmy to par (aby zmienić nazwę należy zmienić kod w zdarzeniu kroku obiektu kontrolnego), w zdarzeniu tworzenia napiszmy:

200?"200px":""+(this.scrollHeight+5)+"px");">selected=false; //Tutaj jest nasza zmienna określająca, czy obiekt jest zaznaczony

To wszystko. Teraz oczywiście potrzebujemy obiektu, który może się poruszać, nazywamy go objTest i wpisujemy kod w zdarzeniu tworzenia:

200?"200px":""+(this.scrollHeight+5)+"px");">gox=x; //Gdzie iść...
goj=y; //przez y
wybrane=fałsz; //Nie jesteśmy wybrani =)
object_set_parent(self,par) //Tutaj jest wybór rodzica

Nowa akcja:

200?"200px":""+(this.scrollHeight+5)+"px");">object_set_parent(ind,obj)

Ustawia obiekt nadrzędny na obiekt o nazwie ind.
I nowy operator: self, oznacza to, że akcja pójdzie sama
Nie bójcie się, zostało jeszcze trochę w wydarzeniu krokowym:

200?"200px":""+(this.scrollHeight+5)+"px");">if odległość_do_punktu(gox,goy) > 20
{
mp_potential_step(gox,goy,6,solid);
}
if(selected=true) && mysz_check_button_pressed(mb_right)
{
gox=mysz_x;
goy=mysz_y;

W dzisiejszych czasach można łatwo znaleźć wiele strategii handlowych, jedynym problemem jest to, że większość z nich albo nie działa, albo jest niewystarczająco skuteczna. W takiej sytuacji stworzenie strategii od podstaw jest doskonałym rozwiązaniem problemu.

I chociaż w każdej konkretnej sytuacji tworzenie pojazdu będzie inne, główne etapy pozostają takie same. Oznacza to, że można stworzyć coś w rodzaju uniwersalnego przewodnika, przechodząc kolejno przez wszystkie etapy, a na koniec otrzymamy w pełni działający system.

Choć rozważymy możliwość stworzenia strategii od zera, zaczynając od pomysłu, a kończąc na wprowadzeniu filtra i ostatecznym rozwoju pojazdu, nie oznacza to, że wszystkie gotowe systemy należy od razu wyrzucić jako oczywiście nieskuteczne . Jako podstawę można zastosować kilka TS i po prostu dodać kilka filtrów, aby wyeliminować fałszywe sygnały.

Główne etapy tworzenia strategii

Jeśli weźmiesz losowo 5-7 wskaźników i spróbujesz stworzyć z nich działający pojazd, jest mało prawdopodobne, aby wyszło coś przydatnego. Najpierw trzeba przemyśleć główną ideę strategii i dopiero potem przejść do doboru narzędzi. Można zaproponować następującą sekwencję działań:

  • jeśli system jest tworzony od podstaw, to pierwszym krokiem jest praca nad pomysłem. Na tym etapie musisz tylko zdecydować, jaki będzie Twój styl tradingu, np. czy transakcje będą przeprowadzane zgodnie z trendem, czy przeciwko niemu, a może strategia zaplanowana jest wyłącznie na wybicie. Nie myślimy jeszcze o szczegółach;
  • Po wybraniu odpowiedniego stylu handlu możesz zacząć opracowywać szczegóły. Przed wyborem instrumentów należy jasno określić działające pary walutowe i ramy czasowe, czas handlu itp.;

Ważny! Przy wyborze przedziału czasowego nie zaleca się wybierania zbyt małych przedziałów czasowych, szczególnie jeśli trader nie ma doświadczenia w spekulacji na małych interwałach czasowych. Dla początkujących ogólnie lepiej nie schodzić poniżej H1-H4, możesz przeczytać więcej o wyborze optymalnego przedziału czasowego.

  • kolejnym etapem jest dobór odpowiednich instrumentów i tutaj ogrom wyboru może zrobić traderowi okrutny żart, gdyż ma on do dyspozycji dziesiątki wskaźników, możliwość wykorzystania analizy świecowej, falowej, technicznej i fundamentalnej. Z całej tej różnorodności musisz wybrać kilka instrumentów, które najlepiej odpowiadają Twojemu zamierzonemu stylowi handlu;
  • Jedną z głównych zasad każdej strategii jest to, że odebrany sygnał musi być potwierdzany przez kilka filtrów, zaleca się jednak ograniczenie ich liczby. Na przykład w przypadku strategii wskaźników niepożądane jest, aby liczba wskaźników przekraczała 3-4, w przeciwnym razie sygnały będą zamieszane, a jeśli planujesz pracować przy użyciu analizy technicznej, wskaźniki będą odgrywać rolę pomocniczą;
  • opracowywane są zasady wsparcia pozycji, w rezultacie powinien powstać algorytm działań dla dowolnego scenariusza;
  • ostatnim etapem jest uruchomienie pojazdu najpierw na koncie historycznym, a następnie na koncie demonstracyjnym, lub jeszcze lepiej, na koncie real cent. Głównym celem jest sprawdzenie opłacalności strategii w rzeczywistych warunkach, a konto realne (nawet grosz) pozwoli poczuć całą gamę emocji, od euforii po gorycz strat.

Możesz także doradzić, aby nie skupiać się na złożoności pojazdu. Praktyka pokazuje, że nadmierna złożoność wcale nie jest wskaźnikiem efektywności. Im prostszy system, tym łatwiej jest handlować.

Co powinno znaleźć się w pojeździe

Tworzenie strategii przypomina trochę zestaw konstrukcyjny, wystarczy wybrać odpowiednie części. Tworząc pojazd możesz i powinieneś skorzystać z:

  • wskaźniki. Co więcej, nie należy gonić ani za ich liczbą, ani nadmierną złożonością, nawet w pojazdach w pełni mechanicznych wystarczą 3-5 sztuk;
  • wzory graficzne – dobrze znane flagi, proporczyki, trójkąty, głowa z ramionami, podwójne dna i góry nadal świetnie się sprawdzają;
  • konstrukcje graficzne;
  • poziomy Fibo;
  • elementy analizy fundamentalnej - obecnie trudno jest zarabiać wyłącznie na wiadomościach, ale w handlu należy brać pod uwagę kalendarz ekonomiczny. Przynajmniej wystarczy przenieść transakcje na próg rentowności przed publikacją ważnych statystyk dla USA czy Europy, albo nawet całkowicie zamknąć zysk.

Istnieje również szereg technik, których zalety są wątpliwe:

  • Martingale to początkowo nieopłacalna taktyka, jedyną szansą powodzenia jest to, że przed stratą będziesz w stanie odzyskać kwotę depozytu i trochę zarobić;

  • Niewskazane jest także stosowanie ryglowania, jeśli nie jest to absolutnie konieczne, gdyż wówczas dość trudno jest opuścić zamek;
  • Lepiej też nie używać sygnałów z zewnątrz. Sygnały z zewnątrz oznaczają np. porównanie liczby sprzedających/kupujących, różne wskaźniki nastrojów większości traderów itp. Ale jest też szereg zasobów, których można posłuchać np. Autochartist daje dobre sygnały w oparciu o wzory graficzne;
  • Lepiej też nie stosować elementów analizy fal (przynajmniej dla początkujących). Choć zdarzają się tu wyjątki, np. handel za pomocą Wolfe Waves opiera się właśnie na analizie fal, jednak nie jest on szczególnie skomplikowany.

Opracowanie prostej strategii wskaźnikowej

Załóżmy, że główną ideą strategii jest handel wyłącznie w kierunku trendu. Co więcej, na rynek wejdziesz nie w momencie pojawienia się trendu, co jest dość ryzykowne, ale po zakończeniu niewielkiej korekty.

Strategia powinna działać na niemal każdej parze walutowej, jest to konieczne, ponieważ ze względu na duże ramy czasowe sygnały nie będą pojawiać się zbyt często. Tak więc sytuacja będzie oceniana na podstawie 5-7 par walutowych jednocześnie. Jeśli chodzi o ramy czasowe, odpowiednia jest D1, wychodzimy z tego, że Forex na początkowym etapie jest jedynie dodatkiem do głównej pracy, dlatego będziemy handlować na świecach dziennych.

Teraz musisz zdecydować, w jaki sposób dokładnie zostanie określony moment wejścia. Istnieje wiele możliwości identyfikacji trendu:

  • wizualnie - ale spojrzenie nie pozwoli Ci opracować jasnych zasad handlu;
  • przy użyciu jednej lub więcej średnich kroczących;
  • według wartości wskaźnika ADX, jeśli jest większa niż 30, oznacza to silny trend, poniżej 20, rynek jest spokojny;
  • stosowanie konstrukcji graficznych;
  • Wstęgi Bollingera pozwalają ocenić siłę trendu na podstawie odległości pomiędzy górną i dolną granicą kanału.

Ogólnie rzecz biorąc, opcji jest wiele, ale ponieważ strategia musi być tak prosta, jak to tylko możliwe, skupimy się na średnich kroczących. Albo raczej, jeden MA, ocenimy kierunek trendu na podstawie pozycji ceny w stosunku do niego. Możesz zacząć od okresów, które uśredniają cenę w całym okresie (tydzień, miesiąc, kwartał itp.), na przykład 20 będzie średnią ceną w ciągu ostatniego miesiąca. Najtrudniej jest wybrać odpowiedni okres MA, ale tutaj trzeba będzie postępować metodą prób i błędów.

Główna idea handlu będzie następująca: czekamy, aż pojawi się ruch w trendzie, następnie w ciągu jednego dnia następuje korekta, po jej zakończeniu dochodzi do zawarcia transakcji. Jeśli wszystko to przedstawimy w formie jasnych zasad, wówczas algorytm działań będzie wyglądał następująco (na przykładzie zakupów):

  • najpierw sprawdzamy pozycję cenową względem MA, cena powinna znajdować się powyżej linii;
  • Następnie musimy znaleźć ruch trendowy, potrzebujemy świecy o dużym korpusie i małych cieniach (wskazane jest, aby wartość cienia nie przekraczała 10-15% wielkości korpusu świecy);
  • po niej powinna nastąpić świeca z małym zakresem dziennym (odległość od Wysokiego do Zamkniętego). Cena Zamknięcia nie powinna osiągnąć poziomu 50% z dnia poprzedniego – w tym dniu następuje korekta ceny.

W takim przypadku korekta może odbywać się według 2 scenariuszy:

  • Kiedy uformuje się świeca z długim cieniem poniżej, możesz otworzyć transakcję natychmiast po zamknięciu dnia. Taki kształt świecy wskazuje, że korekta została już zakończona;
  • możliwą opcją jest to, gdy świeca korekcyjna zamyka się na minimum, tj. wycofywanie nie zostało jeszcze zakończone, w tym przypadku musisz poczekać, aż zamknie się kolejna świeca; jeśli jest biała, możesz otworzyć pozycję długą.

Jeśli chodzi o utrzymanie pozycji i zlecenia zabezpieczające, to stop loss należy ustawić przynajmniej poza środkiem świecy o dużym korpusie. Aby uzyskać poziom docelowy wystarczy odłożyć wartość tej samej świecy z poziomu zakupu, można zastosować trailing stop.

Zasady strategii zostały ustalone, pozostaje tylko przetestować ją w działaniu. Praktyka pokazuje, że nawet tak prosty algorytm generuje ponad połowę zyskownych transakcji (a jeśli wcześniej przeniesiesz transakcję do zera, prawdopodobieństwo straty maleje).

Wejście na początek trendu

Zaproponowany powyżej ST pomija część ruchu trendu, ale nie wymaga dużo czasu na analizę rynku. Jeśli możliwe jest monitorowanie zachowania ceny dnia, można spróbować podążać za trendem już na samym początku jego kształtowania się. Zatem główną ideą strategii jest wejście na rynek po tym, jak cena zacznie opuszczać kanał poziomy.

I tutaj bardzo ważne jest, aby otrzymać niezawodny sygnał na czas, na samym początku trendu. Z pomocą ponownie mogą przyjść średnie kroczące, jednak zostaną one wykorzystane nieco inaczej niż w poprzedniej strategii. Możesz wziąć kilka MA z różnych okresów i ocenić powstawanie trendu na podstawie ich wzajemnego położenia.

Nie jest to podejście rewolucyjne, coś podobnego zastosował Bill Williams w swoim słynnym Aligatorze. Zatem ten wskaźnik można nawet uznać za podstawę ST.

Jeśli do H1 dodamy Aligatora ze standardowymi ustawieniami, zobaczymy, że daje on dużo fałszywych sygnałów, naszym zadaniem jest je wyeliminować. W tym celu wejdziemy na rynek ze zleceniem oczekującym, a poziom jego umieszczenia zostanie określony za pomocą Fraktali.

W rezultacie przepływ pracy będzie wyglądał następująco (na przykładzie zakupów):

  • Szukamy płaskiego obszaru na wykresie (wszystkie linie Aligatora są ze sobą chaotycznie splecione);
  • Następnie potrzebujesz świecy fraktalnej (i powinna ona znajdować się nad liniami, nawet nie dotykając ich dolnym cieniem);
  • zlecenie kupna zostaje umieszczone tuż powyżej maksimum, a zlecenie ochronne poza dolną granicą strefy konsolidacji;
  • TP jest albo stałe (50-70 p), albo stosuje się trailing stop. Ogólnie rzecz biorąc, dość trudno jest przewidzieć siłę ruchu trendu, dlatego lepiej zastosować trailing stop niż stały TP lub określić poziom docelowy na podstawie tej samej analizy technicznej.

Przykładem tym nie jest opracowanie strategii od zera, ale raczej niewielka adaptacja znanej już strategii do współczesnego rynku.

Przykład prostego systemu kombinowanego

Pomysł jest nadal ten sam - wpis na końcu korekty, ale rozwiążemy ten problem w inny sposób. Cel pozostaje ten sam - określić moment zakończenia korekty i wejść w kierunek trendu, ale jeśli wcześniej korzystaliśmy ze średniej kroczącej, to teraz wykorzystamy poziomy Fibo i oscylator, aby określić zakończenie wycofywania.

Nas będzie interesował wyraźny ruch trendu, można go również określić wizualnie. Następnie wystarczy rozciągnąć do niego poziomy Fibo, jest to konieczne, aby określić potencjalne poziomy zakończenia korekty. Najbardziej znaczący poziom korekty wynosi 38,2%, dopuszcza się handel na odbiciach od 50% do 61,8%.

Ale fakt, że cena dotyka poziomu Fibo, nie wystarczy, potrzebne jest potwierdzenie. Stochastic radzi sobie z tym zadaniem całkiem dobrze (w tym samym celu możesz spróbować użyć RSI). Na przykład w przypadku transakcji kupna cena musi znajdować się blisko poziomu korekty, a kurs stochastyczny w tym momencie musi znajdować się w strefie wyprzedania.

Gdy cena dotknie poziomu, czekamy, aż Stochastic opuści strefę wyprzedania i kupi. Stop można umieścić poza kolejnym poziomem korekty, a TP można ustawić co najmniej na ostatnim maksimum przed rozpoczęciem wycofywania.

Poziomy Fibo i oscylator to tylko minimum wymagane do odebrania sygnału. W razie potrzeby możesz skomplikować system, wprowadzając dodatkowe filtry.

Strategie oparte na analizie technicznej

Jeśli zastosuje się analizę techniczną w czystej postaci, zadanie stanie się nieco prostsze, nie będzie już konieczne opracowywanie pojazdu od zera. Technik i narzędzi jest cały szereg, których skuteczność została sprawdzona na przestrzeni lat, a przedsiębiorca może jedynie wybrać te odpowiednie i zastosować je w konstrukcjach.
W zasadzie do udanego handlu wystarczy:

  • linie trendu – budujemy je na różnych interwałach czasowych, zaczynając od najwyższego i stopniowo schodząc do działającego;
  • Poziomy Fibo należy rozciągnąć na znaczące ruchy cen w historii. Kluczowe znaczenie będą miały poziomy korekcji na poziomie 38,2, 50 i 61,8%, praktyka pokazuje, że na tych znakach najczęściej kończy się korekta;
  • MT4 implementuje także szereg innych narzędzi analizy technicznej np. widły Andrewsa, zestaw narzędzi Ganna, kilka rodzajów kanałów itp.

Jednak do w miarę dokładnej prognozy wystarczą poziomy Fibo i linie trendu; obszary koncentracji poziomów i linii zwykle pełnią rolę wsparcia/oporu. Handel może być prowadzony zarówno w przypadku wybicia, jak i odbicia od poziomów i linii.

Jeśli chodzi o dodatkowe filtry, możesz dodać formacje świecowe i jakiś wskaźnik do wyszukiwania rozbieżności (ten sam stochastyczny lub MACD). Możesz przeczytać więcej o zastosowaniu analizy technicznej.

Filtry dla systemów transakcyjnych

Każdy instrument handlowy, nawet jeśli pomysł działa, a handel jest ogólnie opłacalny, generuje wiele sygnałów, a niektóre z nich są nieopłacalne. Po uformowaniu reguł systemowych można skorzystać z szeregu uniwersalnych filtrów, które pomogą poprawić współczynnik transakcji zyskownych/nierentownych.

Istnieje wiele filtrów, które będą pasować do niemal każdej strategii:

  • sytuacja w wyższych ramach czasowych. Jeśli na przykład strategia jest realizowana na H1 zgodnie ze strategią mechaniczną, wówczas nie będzie błędem przyjrzeć się temu, co dzieje się na H4 i D1;
  • średni dzienny zakres, czyli odległość, jaką cena pokonuje średnio dziennie; podczas handlu w ciągu dnia pomoże to w filtrowaniu szeregu sygnałów. Wyobraźmy sobie, że w ciągu dnia cena porusza się średnio o 100-120 pipsów, jeżeli któregoś dnia cena do wieczora przekroczyła już 90-100 pipsów w jedną stronę, a SPW daje sygnał do wejścia na rynek w w tym samym kierunku, wówczas warto go zignorować, statystyki mówią, że w tym dniu ruch najprawdopodobniej nie będzie kontynuowany;

Ważny! Przestrzeganie tej zasady spowoduje, że niektóre zyskowne transakcje zostaną pominięte, ale stosunek transakcji zyskownych/stratnych wzrośnie.

  • Liczba świec po utworzeniu sygnału również ma znaczenie, istnieje nawet filtr 5 świec, nad którym zastanowimy się bardziej szczegółowo.

Gdy TS daje sygnał, wówczas w idealnym przypadku sytuacja powinna zacząć się rozwijać na naszą korzyść niemal natychmiast po zamknięciu transakcji (czyli na kolejnych 1-3 świecach). Jeżeli tak się nie stanie, to im więcej czasu upłynie od zawarcia transakcji, tym mniejszy wpływ na rynek będą miały te czynniki, które miały znaczenie w momencie wejścia tradera na rynek. Z czasem ich wpływ zanika.

Jako kryterium możesz przyjąć 5 świec, jeśli po zawarciu transakcji cena nie przesunęła się w korzystnym kierunku dla 5 świec, to lepiej zamknąć transakcję ręcznie. Oznacza to scenariusz, w którym wykres pozostaje na miejscu, ale jeśli cena poszła w stronę nieopłacalną, wówczas ten filtr nie jest stosowany.

Warunek ten dotyczy niemal wszystkich przedziałów czasowych (z wyjątkiem m1-m5). Oczywiście nadal istnieje możliwość, że cena oscylując wokół jednego znaku będzie poruszać się we właściwym kierunku, ale naszym wyborem jest stabilność. Lepiej poświęcić kilka dochodowych transakcji, ale unikać 3-5 nieopłacalnych.

Zreasumowanie

Rozpoczęcie pracy bez systemu tradingowego jest jak śmierć, każdy trader powinien o tym pamiętać. W tym przypadku utrata depozytu jest tylko kwestią czasu.

Wybór odpowiedniego pojazdu nie jest trudny, ponadto w domenie publicznej można znaleźć dobrze działające systemy. Można się też martwić o stworzenie własnej strategii, zwłaszcza, że ​​nie wymaga to znajomości języków programowania, wystarczy mieć pomysł i chociaż podstawową wiedzę o tym, jak działa rynek i jakie wskaźniki służą do jakich celów.

Sam proces przypomina składanie zestawu konstrukcyjnego – najpierw stawiamy problem, a potem po prostu wybieramy niezbędne narzędzia do jego rozwiązania. Po sprawdzeniu historii możesz przystąpić do testu TS na koncie demo lub centowym.

W tym artykule raczej nie poruszę niczego nieznanego. Wszystkie obliczenia są proste i zrozumiałe dla każdego, kto wie, czym jest Ajax. Napisałem już artykuł o tym jak połączyć klienta z serwerem w grach czasu rzeczywistego (). W tym artykule poruszam te same kwestie, które dotyczą gier turowych.

Więc co jest gra turowa? Następującą definicję można znaleźć w Wikipedii strategia turowa - to gatunek gier komputerowych, których główną cechą jest to, że gracze na zmianę wykonują ruchy, w przeciwieństwie do strategii czasu rzeczywistego. Uprościłbym nieco tę definicję:

  • Strategia krok po kroku - to turowa gra strategiczna.
  • Gra strategiczna - Jest to gatunek gier, w którym kluczem do osiągnięcia zwycięstwa jest planowanie i myślenie strategiczne..
  • Gra turowa - to gatunek gier, których główną cechą jest to, że gracze na zmianę wykonują ruchy.
Gry turowe obejmują:
  • Strategie turowe
  • Gry karciane
  • Gry planszowe (szachy, go, monopol itp.)
Zauważam, że gry turowe nakładają mniej ograniczeń na złożoność protokołu interakcji w porównaniu do gier czasu rzeczywistego. Mianowicie, czas reakcji na konkretne zdarzenie nie odgrywa kluczowej roli. Gracz ma zazwyczaj 10 sekund na podjęcie decyzji. Nawet jeśli ping jest gigantyczny, powiedzmy 3 sekundy, gracz wciąż ma 7 sekund na przemyślenie. Poza tym ping może skakać i skakać, ale w ogóle się tym nie przejmujemy (w grach czasu rzeczywistego taka sytuacja praktycznie zabija każdy protokół).

Zazwyczaj (w 95% gier turowych) w danym momencie decyzję podejmuje dokładnie jeden gracz. W rezultacie zawęża się liczba żądań, na które musimy odpowiednio odpowiedzieć.

Dlatego tworząc protokół skupimy się przede wszystkim na łatwości jego wdrożenia i wsparciu. Dzięki temu będziemy mogli osiągnąć większy zysk w krótszym czasie.

Powyższe rozumowanie opiera się na 2-miesięcznym rozwoju pewnej gry karcianej.

Mądry czy głupi klient?

Najpierw zdecydujmy, jak „inteligentny” może być nasz klient. Zastanawiam się, czy warto powielać logikę aplikacji (reguły gry) na kliencie. Oczywiście serwer musi być inteligentny, aby zapobiec potencjalnemu włamaniu do aplikacji. Ale czy warto uczyć klienta logiki biznesowej?

Zależy to bezpośrednio od tego, ile waży pełna ilość danych o stanie Twojej gry. Jeśli ta ilość danych jest duża, ich zebranie na serwerze zajmuje dużo czasu i jest przesyłane do klienta, wówczas sensownym jest zaimplementowanie części logiki na kliencie, aby odciążyć serwer. Na przykład w Civilization wskaźnik wykorzystanej pamięci jest zawsze poza skalą. Czy możesz stworzyć coś podobnego, pozostawiając tylko interfejs użytkownika na kliencie?

Z drugiej strony, im mądrzejszy klient, tym droższe będzie stworzenie gry. Pragnę zaznaczyć, że czas rozwoju serwera nie jest w żaden sposób zależny od erudycji klienta. Nawet jeśli klient jest super-duper-mega mądry, jeśli użytkownik chce ponownie załadować okno przeglądarki, serwer będzie musiał zebrać i złożyć wszystkie dane o grze, aby przesłać je do klienta. A la „Ładowanie zapisanej gry”. Wniosek: Inteligentny klient może przyspieszyć aplikację, ale zawsze będzie wymagał dodatkowych zasobów do opracowania aplikacji.

Sugeruję co następuje test:

1. Czy pozwala na to głośność kanału?

Oszacuj średnią wagę pełnej ilości danych o stanie gry. Następnie pomnóż przez średnią liczbę żądań do serwera na sekundę. Jeśli wynikowa liczba przekracza pojemność wychodzącego kanału danych, głupi klient jest nie do przyjęcia. Jeśli liczba ta przekracza 20% kanału wychodzącego, to warto zastanowić się, czy to zadziała?

2. Czy jest to pracochłonne?

Oszacuj złożoność algorytmu zbierania danych w grze (w ułamkach sekundy). Tutaj uwzględniane są wszystkie zapytania do bazy danych. Następnie pomnóż przez średnią liczbę żądań do serwera na sekundę. Jeśli czas przekracza jedną sekundę, to głupi klient jest nie do przyjęcia. Jeśli liczba ta przekracza 200 ms, to warto zastanowić się, czy będzie ona trwała?

Kontynuacja:

Park rozrywki:
Będziemy potrzebować:
budowniczy duszek
menu duszka
DZWOLKI RÓŻNYCH PRZYCISKÓW, TAKICH JAK:
srite z napisem (budowa, konstrukcja, budowa itp.)
wyświetlone okno
rysunek budynku,
1) resztę dodamy sami
2) słowo podróbka - stworzone przeze mnie, ponieważ będziemy musieli go sfałszować, aby pasował do naszego źródła)
IIZacznijmy:
1) utwórz wszystko co jest napisane w punkcie I z wyjątkiem 1)
Stwórzmy zmienną globalną o nazwie pieniądze i ustawmy dowolną początkową kwotę pieniędzy
Stworzymy także obiekt myszy i klawiatury
Stwórzmy tekst, nazwijmy go informacją, utwórzmy zawsze wydarzenie i utwórzmy w nim akcję:
wybierz informację w wyborze akcji wybierz ustaw tekst w tekście napisz to:
"pieniądze: " &(globalne("pieniądze".
2) dodać menu, głównym zadaniem menu nie jest przeszkadzanie, ale pomaganie graczowi w nawigacji (jak może przeszkadzać? - łatwo jest, jeśli umieścisz je w środku gry); przed zrobieniem menu robimy utworzymy nową warstwę, którą nazwiemy menu, w jej proporcjach (ustawienia, opcje) w wyświetlanym elemencie napiszemy:


dodamy do niego duszka i zrobimy zdjęcie menu, które było w materiałach przedprodukcyjnych (punkt I) i umieścimy nasze menu w ustronnym miejscu, gdzie nie będzie przeszkadzało, ale będzie widoczne na ekranie
Umieśćmy też przycisk wykonany z materiałów wykończeniowych (punkt I) z napisem BUILD (lub coś w tym stylu)
umieśćmy to w menu
Przejdź teraz do Edytora arkusza wydarzeń
utwórz wydarzenie (#bla bla bla # - to jest moja wiadomość (wyjaśnienie) do Ciebie tylko zamiast bla bla bla będzie mój komentarz dla Ciebie; >> - akcja; ll - podział okien np.:

mysz&klawiatura ll na obiekcie kliknięty ll kliknięty lewym przyciskiem myszy, aby wyrazić sprzeciw #twój przycisk menu z napisem BUILD (lub coś w tym stylu)##reszta później (patrz punkt 3)#
3)teraz najtrudniejsza część(Rozbiłem to na dwa punkty, żeby nie było to takie skomplikowane),
stwórz duszka z materiałów wykończeniowych „okno, które się pojawi”
następnie tworzymy pustego duszka o nazwie p1, przenosimy okno poza ekran i umieszczamy p1 w miejscu, w którym powinno pojawić się okno po naciśnięciu przycisku budowania (lub coś w tym rodzaju CHVER)
świetnie! Teraz przejdź do edytora arkuszy wydarzeń
Zapiszmy niedokończone wydarzenie do końca:
Tekst ustawi tekst ll bla-bla-bla)
mysz i klawiatura ll na obiekcie klikniętym ll kliknięty lewym przyciskiem myszy, aby wyrazić sprzeciw #twój przycisk menu oznaczony jako BUDUJ (lub coś w tym stylu)#>>
4)Druga część najtrudniejszej części:
stwórzmy sprite'a na którym zostanie narysowany obraz budynku (materiały wykończeniowe) nazwijmy go h1
stwórzmy pustego duszka, nazwijmy go p2, a teraz umieśćmy go w miejscu, w którym powinno otwierać się okno,
Stwórzmy duszka, także okno (materiały wykończeniowe), w oknie pięknie napiszemy nazwę budynku, jego koszt i opis (opcjonalnie) oraz nazwiemy go i1
utwórzmy kolejnego pustego duszka o nazwie p3, umieśćmy go obok p2, tylko tak, aby dotykał tylko p2 lewym górnym rogiem
Stwórzmy teraz kilka wydarzeń, ale najpierw uczynimy z poprzedniego zdarzenia jedną nową akcję:
mysz&klawiatura ll na klikniętym obiekcie ll kliknięty lewym przyciskiem myszy, aby sprzeciwić się #przycisk twojego menu z napisem BUILD (lub coś w tym stylu)#>> system utworzy obiekt względem obiektu ll #twoje okno# #numer warstwy pod nazwą menu# # X ;Y-nie zmieniaj# na obiekt p1
>>system utworzy obiekt względem obiektu ll #twoje drugie okno# #numer warstwy pod nazwą menu# #X;Y-nie zmieniaj# na obiekt p2
Musimy mu także zwrócić wydarzenie:
skopiuj wydarzenie i odwróć je
nowe wydarzenie
mysz&klawiatura ll jest nad obiektem ll h1>>system ll utworzy obiekt względem obiektu ll i1 #numer warstwy pod nazwą menu# #X;Y-nie zmieniaj# na obiekt p3
Zróbmy duszka z budynkiem (użyj materiałów przedprodukcyjnych) i nazwijmy go domem
Stwórzmy okno, w którym pojawią się nasze budynki po wybraniu ich w menu, nazwijmy je rlo
wydarzenia:
mysz i klawiatura ll na obiekcie kliknięty ll kliknięty lewym przyciskiem myszy na h1>>system utworzy obiekt względem obiektu ll dom #numer warstwy pod nazwą menu# #X;Y-nie zmieniaj# na obiekt rlo
>> system odejmie od wartości ll #ilość pieniędzy, którą należy zabrać podczas budowy#
Teraz nie można było zbudować wydarzenia
Opowiem Wam o mojej poprzedniej metodzie prohibicji (kiedy skończę pisać, przeanalizuję inną metodę, która mnie zmartwiła, gdy przypomniałem sobie świat parków rozrywki)
wydarzenia:
dom ll po zderzeniu z innym obiektem ll do domu
>>dom zostanie zniszczony
>> system odejmie od wartości ll - #podwoić kwotę zabraną podczas budowy##uwaga, którą należy umieścić - ilość#
w zasadzie wszystko.
III co chcę powiedzieć:

Bardzo mnie zmartwiło upadek mojej gry. To była gra strategiczna i według jej schematu powstał ten artykuł. Proszę nie krytykować za bardzo, pisałem już dawno, jeśli znajdziecie jakieś błędy w mowie, napisz, a ja je poprawię
a także tutaj jest kod źródłowy do oglądania, spójrz, w zasadzie wszystko jest tak samo, jak tu jest napisane, tylko że to była wersja demonstracyjna gry. Najważniejsze, żeby niczego nie zmieniać, w przeciwnym razie będzie błędnie !
korzystaj, eksperymentuj, sprawdzaj, rób co chcesz, dla mnie jest w porządku

KaMiKaZa:
Wszystkie wyrażenia „systemowe” muszą być zawarte w tagu „Code”.
Wtedy myślę, że będzie lepiej.
Także wydaje mi się, że tutaj zrzuty ekranu by nie zaszkodziły. A także kod źródłowy dla początkujących.

Park rozrywki:
Nie wiem, jak robić zrzuty ekranu wydarzeń.

Cóż, to nie jest konieczne.

iamnp:
topic_park , na klawiaturze znajduje się specjalny przycisk - PrintScreen

Park rozrywki:
Wiem, że niektórzy po prostu robią to inaczej, a poza tym każdy ma swojego duszka
i jeśli ustawię te wszystkie duszki, niewiele osób zrozumie.
No cóż, może ktoś da plusa? Nic dziwnego, że miałem trudności?

burłaczenko:
Aby taka lekcja kogoś zainteresowała, trzeba ją odpowiednio sformatować, ale tutaj „jakkolwiek było”.
A jednak, jeśli chcesz, po trochu, kiedy masz czas, „upiększ” go.

Park rozrywki:
OK, wrócę ze szkoły i się przygotuję.
PS. dodane źródło

Serega Lebiediew:

iamnp, gdzie później trafiają te zrzuty ekranu?

KaMiKaZa:

Do schowka.
Przejdź do dowolnego edytora tekstu i wykonaj operację „Wklej” lub naciśnij Ctrl+V.

Uważam Państwa firmę za jedną z najsilniejszych na rynku usług doradczych w naszym kraju. Podoba mi się, że poruszasz szeroki zakres problemów związanych z zarządzaniem i omawiasz je z odpowiednią jakością i głębią. W publikacjach Twojej firmy znajduję wiele przydatnych informacji, ponieważ zawsze warto zapoznać się z doświadczeniami profesjonalistów i uczyć się od nich.

Borisyuk Jurij Aleksandrowicz, konsultant ds. zarządzania, doktor nauk technicznych

Bardzo podoba mi się seria kursów mistrzowskich, które prowadzisz. Osobiście, będąc wcześniej dyrektorem fabryki, zacząłem zmieniać swoje podejście do zarządzania, m.in. dzięki otrzymanym od Państwa informacjom. W jakiś sposób zareagowała na to, co zrobiłem i zaobserwowałem w fabryce. Od tego czasu zacząłem się zastanawiać, jak nieefektywne są możliwości przemysłowe Rosji oraz jak ogromny jest w niej potencjał i jak można go zrealizować. Zaznajomiwszy się osobiście z problemami różnych przedsiębiorstw (czasami znajomi zapraszają mnie jako eksperta) widzę, jak wiele można zrobić, jak zwiększyć zarówno efektywność, jak i efektywność.

Dryagin Oleg Borysowicz

Tak, podobają mi się twoje kursy mistrzowskie, bardzo systematyczne podejście, znajomość materiału na wysokim poziomie i oczywiście duże doświadczenie praktyczne w poruszanych zagadnieniach. To co mnie pociąga to to Profesjonalizm Aleksandra i wysoki poziom wiedzy zawodowej w temacie pozwala mi inaczej spojrzeć na rzeczy już znane. Z mojego punktu widzenia tak jest Bardzo ważne i konieczne jest spojrzenie na rzeczy, które znasz, w nowy sposób, ponieważ... Podczas prac chirurgicznych bardzo często oko staje się „zamglone” i przestajemy widzieć właściwie rzeczy oczywiste.

Elena Fedash, dyrektor HR, ATB Corporation, Dniepropietrowsk.

Kontynuując temat:
Różnorodny

Ostatnio dość często zamiast robić np. oscyloskop z komputera, wiele osób woli po prostu kupić cyfrowy oscyloskop USB. Jednak po spacerze...