Meta Trader에서 스프레드 거래 - 페이지 78

 
통화가 최선의 선택이 아닌 것 같습니다. 최대 아우디 및 키위
 

여기에서 신고전주의 코드를 사용하여 두 악기의 동적 로트를 계산하는 기능을 알아냈습니다.

고문에서 사용합니다. 확인, 괜찮아?

위험 매개변수는 우리가 위험을 감수하는 비율입니다.

옵션:

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);
}

 

삽입됨. 덕분에!

잘 작동하는 것 같습니다!


 
rid >> :

삽입됨. 덕분에!

잘 작동하는 것 같습니다!

네... 장비별로 로트 차원에서 로트 차원을 정규화해야 합니다... 그렇지 않으면 로트 0.1831이 사실이 아닙니다... 바로 지금...

 
Jahspear >> :

네... 장비별로 로트 차원에서 로트 차원을 정규화해야 합니다... 그렇지 않으면 로트 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); //больший по соотношению нормализуем
}

 
프로그래밍과 친한 모든 분들께 부탁드립니다. 아래는 수익 후행 전문가입니다. 누군가 블록을 삽입하여 실제 수익을 티커로 추적하고 주석에 표시할 수 있습니다. 뭔가가 작동하지 않습니다. 미리 감사드립니다.
파일:
archive.zip  5 kb
 
Jahspear >> :

네... 장비별로 로트 차원을 로트 차원으로 정규화해야 합니다... 그렇지 않으면 로트 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 :)
 

또한 좋은 접근 방식입니다. 당신만 표시하지 않았습니다 - 프로그래밍 방식으로 계산하는 방법

(Mediana( symbol_1 ) 및 Mediana(symbol_2).

그런데 알고리즘에 따라 GCG0+UMH0 탠덤 로트를 어떻게 얻습니까?

 
rid >> :

그런데 알고리즘에 따라 GCG0+UMH0 탠덤 로트를 어떻게 얻습니까?

그러나 제비를 동기화하는 기존 방법이 더 정확합니다.

기본 부지와 두 개의 도구를 설정에 입력하고 스크립트를 차트에 놓으면 완료됩니다...



파일:
lotsu-v2.ex4  3 kb
 

생각의 식품 : 상장지수펀드(ETF)

분명히이 기금으로 "서두르는"것이 흥미로울 것입니다.

MKT VCTR 러시아 SBI



사유: