To się robi w celu sprawdzenia błędu wykonania kodu, czyli ERROR.
Oczywiście, należy to zawsze robić.
MetaEditor też o tym przypomina przy kompilacji kodu.
To się robi w celu sprawdzenia błędu wykonania kodu, czyli ERROR.
Dzięki za odpowiedź i pomoc. Niestety wiedziałem o tym int ticket i stosowałem go wcześniej i nie dawało to żadnego rezultatu, a wolałem nie inicjować tej zmiennej bo nie wiedziałem po co to się robi i do czego służy akurat w tym wypadku.
Dzięki za odpowiedź i pomoc. Zastosowałem podpunkty 1 oraz 3 ale bez efektu. Co do podpunktu drugiego, jak można zastąpić ten znak (==)? Chodzi mi bardziej o to w jaki sposób dodać poślizg do tego aby wyłapywało większy zakres. Próbowałem również robić taki warunek ale również bez skutku:ninjaproject pisze: ↑27 lis 2020, 22:401. Jak ma być z 10 dni, to PERIOD_D1.
_Period to jest bieżący interwał, czyli ten, na który patrzysz.
2. Cena bieżąca może nie być równa (==). Raczej ciężko będzie trafić w kwotowania dokładnie równe.
3. NormalizeDouble(Ask-600*_Point,Digits), NormalizeDouble(Ask+1200*_Point,Digits)
Zapis 'NormalizeDouble" nie jest w tym przypadku konieczny, Ask i Bid zawsze są "znormalizowane", zapis ten jest konieczny gdy cena jest odczytywana z jakiegoś wskaźnika lub np. wartości linii trendu itp.ninjaproject pisze: ↑27 lis 2020, 22:40
3. NormalizeDouble(Ask-600*_Point,Digits), NormalizeDouble(Ask+1200*_Point,Digits)
Nie chce mi się sprawdzać, ale to jest kalkulacja.grzegrzyw pisze: ↑28 lis 2020, 09:45Zapis 'NormalizeDouble" nie jest w tym przypadku konieczny, Ask i Bid zawsze są "znormalizowane", zapis ten jest konieczny gdy cena jest odczytywana z jakiegoś wskaźnika lub np. wartości linii trendu itp.ninjaproject pisze: ↑27 lis 2020, 22:40
3. NormalizeDouble(Ask-600*_Point,Digits), NormalizeDouble(Ask+1200*_Point,Digits)
Kod: Zaznacz cały
string order_symbol = _Symbol;
int order_type = OP_BUY;
double order_tradevolume = 0.1;
double order_entryprice = Ask; // lub NormalizeDouble(entryprice,Digits);
int order_slippage = 3;
double order_slprice = NormalizeDouble(Ask-600*_Point,Digits);
double order_tpprice = NormalizeDouble(Ask+1200*_Point,Digits);
string order_comment = "Mój komentarz";
int order_magicnumber = 123456;
datetime order_expiration = 0; // lub data wygaśnięcia
color order_arrowcolor = clrNONE; // lub jakiś color
if(
OrderSend(
order_symbol,
order_type,
order_tradevolume,
order_entryprice,
order_slippage,
order_slprice,
order_tpprice,
order_comment,
order_magicnumber,
order_expiration,
order_arrowcolor)
<0) {
Print(
"OrderSend failed with error #",GetLastError()
);
}
else
{
Print(
"OrderSend placed successfully"
);
}
Takie coś "//" powoduje, że dana linijka nie jest czytana.blashka pisze: ↑30 lis 2020, 19:57Zastosowałem również taki skrypt:
int najwyzszaCena = iHighest(_Symbol,PERIOD_D1, MODE_HIGH, 10, 0);
int najnizszaCena = iLowest(_Symbol, PERIOD_D1, MODE_LOW, 10, 0);
if(Ask>=najwyzszaCena)
{
//int ticketBuy = OrderSend
}
if(Bid<=najnizszaCena)
{
//int ticketSell = OrderSend
}
Niestety otwiera tylko pozycje krótkie i nie w minimach z 10 dni lecz w losowych miejscach, po zmianie znaków otwiera również pozycje długie lecz też nie w miejscach maximum.(pozycje krótkie również są otwierane - również nie we właściwych - losowych miejscach).