//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
if (LotsS1<=LotsS2) { Lots_1=Lot1; //меньший по соотношению оставляем как есть Lots_2=Lot1/LotsS1*LotsS2; //больший по соотношению нормализуем } else { Lots_2=Lot2; //меньший по соотношению оставляем как есть Lots_1=Lot2*LotsS1/LotsS2; //больший по соотношению нормализуем }
//проверяем возможность торговать
if ((Lots_1<Min_Lot1)||(Lots_2<Min_Lot2)) string lotsalert=StringConcatenate("Нет средств для торговли с Risk=",Risk,"%.\n"); else lotsalert="";
네... 장비별로 로트 차원에서 로트 차원을 정규화해야 합니다... 그렇지 않으면 로트 0.1831이 사실이 아닙니다... 바로 지금...
이 블록은 이런 식으로 수행되어야 하며 로트 수가 정확할 것입니다.
//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
int Step; if (LotsS1<=LotsS2) { Step = MathCeil(MathAbs(MathLog(Step2)/MathLog(10))); Lots_1=Lot1; //меньший по соотношению оставляем как есть Lots_2=NormalizeDouble((Lot1/LotsS1*LotsS2),Step); //больший по соотношению нормализуем } else { Step = MathCeil(MathAbs(MathLog(Step1)/MathLog(10))); Lots_2=Lot2; //меньший по соотношению оставляем как есть Lots_1=NormalizeDouble((Lot2*LotsS1/LotsS2),Step); //больший по соотношению нормализуем }
네... 장비별로 로트 차원을 로트 차원으로 정규화해야 합니다... 그렇지 않으면 로트 0.1831이 사실이 아닙니다... 바로 지금...
안녕하세요 여러분, 저는 오랫동안 지점을 따라 다니며 로트의 크기를 결정하기 위해 약간 다른 옵션을 제안합니다.
lot2 =
lot1 *(MarketInfo( symbol_1 ,MODE_TICKVALUE)/MarketInfo( symbol_2 ,MODE_TICKVALUE))*// отношение размеров тиков в валюте депозита( Mediana ( symbol_1 )/ Mediana ( symbol_2 ))*// отношение медиан движения инструментов(MarketInfo( symbol_2 ,MODE_TICKSIZE)/MarketInfo( symbol_1 ,MODE_TICKSIZE))*// отношение размерности тиков(MarketInfo( symbol_1 ,MODE_TICKSIZE)*MarketInfo( symbol_1 ,MODE_LOTSIZE))/// стоимость пункта 1-го инструмента(MarketInfo( symbol_2 ,MODE_TICKSIZE)*MarketInfo( symbol_2 ,MODE_LOTSIZE)// стоимость пункта 2-го инструмента// Медиана - это среднее значение без экстремальных// т.е. в данном случае суммируем (хай-лоу) дневных свечек за какое-то количество дней (например 30), отбрасываем пару самых больших и самых малых значений и усредняем.// по DAX-FTSE кстати соотношение лотов получается примерно 1:2.8 :)
여기에서 신고전주의 코드를 사용하여 두 악기의 동적 로트를 계산하는 기능을 알아냈습니다.
고문에서 사용합니다. 확인, 괜찮아?
위험 매개변수는 우리가 위험을 감수하는 비율입니다.
옵션:
extern string Symbol_1 = "6EM0";
extern string Symbol_2 = "6SM0";
extern double Risk = 10;
string lotsinfo;
double Lots_1; double Lots_2;
코드:
void CountLots()
{
//расчет соотношения лотов по инструментам
double ynax=MarketInfo(Symbol_1, MODE_TICKVALUE)/MarketInfo(Symbol_2, MODE_TICKVALUE)*
(iOpen(Symbol_1,0,0)/MarketInfo(Symbol_1, MODE_TICKSIZE))/(iOpen(Symbol_2,0,0)/MarketInfo(Symbol_2, MODE_TICKSIZE));
double minx=0, miny=0, mindelta=9999;
for (double x=0.01; x<=1; x+=0.01)
{
for (double y=0.01; y<=1; y+=0.01)
{
double delta=MathAbs(y/x-ynax);
if (delta<mindelta)
{
minx=x;
miny=y;
mindelta=delta;
}
}
}
double LotsS1=minx;
double LotsS2=miny;
//расчет динамического лота с заданным параметром Risk
string Symb1=Symbol_1;
string Symb2=Symbol_2;
double Min_Lot1=MarketInfo(Symb1,MODE_MINLOT);// Мин. размер лота
double Min_Lot2=MarketInfo(Symb2,MODE_MINLOT);// Мин. размер лота
double Step1 =MarketInfo(Symb1,MODE_LOTSTEP);//Шаг изменен лотов
double Step2 =MarketInfo(Symb2,MODE_LOTSTEP);//Шаг изменен лотов
double Free =AccountFreeMargin(); // Свободн средства
double One_Lot1=MarketInfo(Symb1,MODE_MARGINREQUIRED);//Стоим.1 лота
double One_Lot2=MarketInfo(Symb2,MODE_MARGINREQUIRED);//Стоим.1 лота
double Lot1=MathFloor(Free*Risk/100/One_Lot1/Step1)*Step1;// Лоты
double Lot2=MathFloor(Free*Risk/100/One_Lot2/Step2)*Step2;// Лоты
//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
if (LotsS1<=LotsS2)
{
Lots_1=Lot1; //меньший по соотношению оставляем как есть
Lots_2=Lot1/LotsS1*LotsS2; //больший по соотношению нормализуем
}
else
{
Lots_2=Lot2; //меньший по соотношению оставляем как есть
Lots_1=Lot2*LotsS1/LotsS2; //больший по соотношению нормализуем
}
//проверяем возможность торговать
if ((Lots_1<Min_Lot1)||(Lots_2<Min_Lot2))
string lotsalert=StringConcatenate("Нет средств для торговли с Risk=",Risk,"%.\n");
else lotsalert="";
//выводим информацию в строку
lotsinfo=StringConcatenate(lotsalert,
"Risk = ",Risk,"%. Лот ",Symbol_1," = ",Lots_1,", Лот ",Symbol_2," = ",Lots_2,".\n");
//Comment(lotsinfo);
}
삽입됨. 덕분에!
잘 작동하는 것 같습니다!
삽입됨. 덕분에!
잘 작동하는 것 같습니다!
네... 장비별로 로트 차원에서 로트 차원을 정규화해야 합니다... 그렇지 않으면 로트 0.1831이 사실이 아닙니다... 바로 지금...
네... 장비별로 로트 차원에서 로트 차원을 정규화해야 합니다... 그렇지 않으면 로트 0.1831이 사실이 아닙니다... 바로 지금...
이 블록은 이런 식으로 수행되어야 하며 로트 수가 정확할 것입니다.
//приведение размера лотов Lots_1/Lots_2 к нужному соотношению LotS1/LotS2, учитывая Lot1 и Lot2
int Step;
if (LotsS1<=LotsS2)
{
Step = MathCeil(MathAbs(MathLog(Step2)/MathLog(10)));
Lots_1=Lot1; //меньший по соотношению оставляем как есть
Lots_2=NormalizeDouble((Lot1/LotsS1*LotsS2),Step); //больший по соотношению нормализуем
}
else
{
Step = MathCeil(MathAbs(MathLog(Step1)/MathLog(10)));
Lots_2=Lot2; //меньший по соотношению оставляем как есть
Lots_1=NormalizeDouble((Lot2*LotsS1/LotsS2),Step); //больший по соотношению нормализуем
}
네... 장비별로 로트 차원을 로트 차원으로 정규화해야 합니다... 그렇지 않으면 로트 0.1831이 사실이 아닙니다... 바로 지금...
안녕하세요 여러분, 저는 오랫동안 지점을 따라 다니며 로트의 크기를 결정하기 위해 약간 다른 옵션을 제안합니다.
또한 좋은 접근 방식입니다. 당신만 표시하지 않았습니다 - 프로그래밍 방식으로 계산하는 방법
(Mediana( symbol_1 ) 및 Mediana(symbol_2).
그런데 알고리즘에 따라 GCG0+UMH0 탠덤 로트를 어떻게 얻습니까?
그런데 알고리즘에 따라 GCG0+UMH0 탠덤 로트를 어떻게 얻습니까?
그러나 제비를 동기화하는 기존 방법이 더 정확합니다.
기본 부지와 두 개의 도구를 설정에 입력하고 스크립트를 차트에 놓으면 완료됩니다...
생각의 식품 : 상장지수펀드(ETF)
분명히이 기금으로 "서두르는"것이 흥미로울 것입니다.
MKT VCTR 러시아 SBI