Witam Panie Marcinie i dziękuję za to pytanie. Pozwolę sobie troszkę uporządkować nazwy aplikacji o których Pan wspomniał i ich zastosowania. Wspomniał Pan o dwóch narzędziach:
1.
Plugin bossaAB - czyli narzędzie pozwalające podłączyć AmiBrokera do naszego systemu do składania zleceń na GPW
bossaNOL3. Dzięki niemu, możemy bezpośrednio z AmiBrokera generować zlecenia - zarówno kupna jak i sprzedaży instrumentów notowanych na Giełdzie. Warto zaznaczyć że sam
plugin bossaAB nie generuje żadnych zleceń, podobnie jak nie jest napisany z myślą o jakiejkolwiek strategii handlu (w tym grze na długo - jak Pan napisał). Plugin ten jest jedynie technicznym interfejsem do systemu giełdowego, a zatem umożliwia składanie wszystkich zleceń dopuszczalnych na Giełdzie i stosowanie wszystkich dopuszczalnych na danym instrumencie strategii - w tym gry na krótko, w przypadku instrumentów pochodnych.
O tym, co będzie robił nasz plugin bossaAB decyduje kod AFL strategii automatycznej uruchomionej w AmiBrokerze lub sam inwestor, bo plugin umożliwia także "ręczne" składanie zleceń z poziomu AmiBrokera - dzięki czemu tworzy środowisko do handlu na Giełdzie łączące w sobie moduł analizy technicznej (okna AmiBrokera) z modułem transakcyjnym, wygodą przypominające nieco platformy znane z rynku Forex.
2.
bossaAB Kreator - to aplikacja do tworzenia kodu strategii automatycznych w języku AFL, a więc zrozumiałym dla AmiBrokera. Kreator pozwala, jak Pan napisał, utworzyć kod prostych strategii także osobom nie znającym języka AFL lub początkującym w programowaniu. W praktyce działa to w ten sposób, że użytkownik wybiera pewne gotowe opcje dotyczące np. wielkości pozycji, sposobu budowania pozycji, rachunku na którym automat handluje itp. a Kreator zwraca gotowy kod AFL. I tutaj rzeczywiście można się spotkać z problemem o którym Pan napisał, bo te gotowe opcje
bossaAB Kreatora dotyczące sposobu budowania pozycji są stworzone z myślą o akcjach, czyli grze na długo.
W praktyce, tj. w kodzie AFL wygląda to tak, że przed złożeniem zlecenia sprzedaży automat sprawdza czy na rachunku inwestycyjnym znajdują się jakiekolwiek zakupione instrumenty, które można sprzedać, np.:
liczba_papierów = nolPositions("");
(...)
if (Sell && liczba_papierów>0)
idsell = nolSell("", "", 0, 0);
(...)
gdzie:
nolPositions() to funkcja zwracająca liczbę papierów na rachunku.
if () - instrukcja sprawdzająca spełnienie warunków (symbol && oznacza iloczyn logiczny 2 warunków, czyli oba z nich muszą być spełnione aby łącznie warunek był prawdziwy)
if (Sell && liczba_papierów>0) - sprawdzamy czy padł sygnał sprzedaży i jednocześnie czy mamy co najmniej 1 papier do sprzedania.
nolSell() - funkcja składająca zlecenie sprzedaży.
Czyli, jeżeli nie mamy instrumentów do sprzedania to automat nie składa zleceń sprzedaży. Jednak nic (poza podstawową znajomością AFL) nie stoi na przeszkodzie aby taki gotowy, wygenerowany przez Kreatora kod w dowolny sposób modyfikować. W tym przypadku wystarczy wyłączenie sprawdzania tego drugiego warunku, aby nasz automat zajmował także pozycje krótkie.
Czyli:
if (Sell)
idsell = nolSell("", "", 0, 0);
(...)
Pozdrawiam,
Sebastian Zadora
DM BOŚ