Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Изменяем код для учитывания "spreadx+spready", добавления:
double AsksReal[MAX_REALSYMBOLS]; // Ask-цены реальных символов (это то что было)
int spread[MAX_REALSYMBOLS]; // spread (это добавил)
И так далее:
AsksReal[i] = MarketInfo(REALSymbols[i], MODE_ASK);
spread[i]=MarketInfo(REALSymbols[i],MODE_SPREAD) * 0.01;//вот только
// spread[i] нулю равный выдается почемуто(может вручную задать, но тогда пары типа USD/JPY будет малюсенький спрэд //и все равно количество знаков после запятой надо задавать). Как добавить знаки после запятой не помню, да //еще и везде, где это учавствует,придется добавлять как то..
........
spread[i]=MarketInfo(REALSymbols[i],MODE_SPREAD) * 0.01;
.........
MinPipsD[i] = MinPips * 0.0001;
spread[i]=MarketInfo(REALSymbols[i],MODE_SPREAD) * 0.0001;
..........
Дальше самое интересное(в смысле все ясно), показывать не хочу
Совсем было бы правильно заменить MinPips на относительную величину. Например, если относительную величину взять 0.006%, то для EURUSD (1.5000) это соответствовало бы примерно 0.0001 (одному "старому" пункту), а для JPYEUR (0.00752) - 0.0000005.
Это классно было бы, тока надо задавать число знаков после запятой, да еще и во всех операциях с MinPips.. Как задать ?
Если роботы, проверенные, уже продаются за деньги, к чему это все приведет в скором времени..?
может купить пока халаява не закрылась
Код для условия SpreadX + SpreadY:
Понятно, у Вас все правильно, только при компиляции функция CloseSomePositions(); не определена. Это у Вас там она наверное в коде.. А я в функцию void GetBidAsk думал spread[] добавить:
.........
Bids[i][j] = 1 / AsksReal[Symb];
Asks[i][j] = 1 / (BidsReal[Symb]-spread[Symb]);
}
else if (Mth == -1) // -1 - "S"
{
Bids[i][j] = BidsReal[Symb]-spread[Symb];
Asks[i][j] = AsksReal[Symb];
}
else
{
S1 = Symb / AmountRealSymbols;
S2 = Symb % AmountRealSymbols;
Bid1 = BidsReal[S1]-spread[S1];
Bid2 = BidsReal[S2]-spread[S2];
Ask1 = AsksReal[S1]+spread[S1];
Ask2 = AsksReal[S2]+spread[S2];
я написал так потому что у меня "spread1" получается равным(например в случае case 1, когда Bids[i][j] = Bid1 * Bid2;Asks[i][j] = Ask1 * Ask2;):
(AsksReal[S1]+spread[S1])*(AsksReal[S2]+spread[S2])-(BidsReal[S1]-spread[S1])*(BidsReal[S2]-spread[S2]), а это не равно вашему spread1 в том же случае-case 1, равному AsksReal[S1]*AsksReal[S2]-BidsReal[S1]*BidsReal[S2]
(для любых i,j)
то есть (A1+s1)*(A2+s2)-(B1-s1)*(B2-s2) > A1*A2-B1*B2
Модификация функции GetBidAsk не требуется.
Модификация функции GetBidAsk не требуется.
а у меня спрэд больше получается..4 ордера открываются на 1 случвй(максимум), - значит 4 спрэда
Вы просто не разобрались.
Почему вы считаете, что "Для арбитража совершенно не имеет значение размер спреда"?
По моему чем меньше спред, тем лучше