MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 1338

 

もっと正しく質問します。

Expert Advisorに必要な取引数を説明するコードのブロックがあります。このように見えます。

int OPEN=1です。

if(OrdersTotal())

OPEN=0; // これ以上、注文を開くことはできません。

if(OPEN==1)

{

//ここで開く

}

問題は、すべてのシンボルに対して必要なディール 数(この例では1)をオープンすることです。そして、彼に説明する必要があります。

現在の 商品について、この数の取引を開始する必要があることを示します。_SymbolやSymbol()のようなものです。どうすればいいのか?解決策は簡単だと思います。

 
sibiriyak73:

もっと正しく質問します。

Expert Advisorに必要な取引数を説明するコードのブロックがあります。このように見えます。

int OPEN=1です。

if(OrdersTotal())

OPEN=0; // これ以上、注文を開くことはできません。

if(OPEN==1)

{

//ここで開く

}

問題は、すべてのシンボルに対して必要なディール 数(この例では1)をオープンすることです。そして、彼に説明する必要があります。

現在の 商品について、この数の取引を開始する必要があることを示します。_SymbolやSymbol()のようなものです。どうすればいいのか?解決策は簡単だと思います。

if(!isTradeToDay(Symbol()))
 {
  //Здесь открываем
 }
 
Iurii Tokman:
クソみたいな案件を取り、売りで
 
sibiriyak73:
とんでもない案件を吹っ飛ばして、売り込みで


1.すべてのコードを表示
2.テレパスクラブに参加する。

 
Iurii Tokman:


1. 全コードを表示する
2. テレパスクラブに参加する:)

:)

買いも売りも開ける方法がわかった。しかし、案件の数は、すべてのティックで開くわけではありません

int start()

{

double a=iOpen(NULL,PERIOD_D1,0);

double d=_ORDER*0.00001;

double c=d+1;

double s=c*a;

double limit= NormalizeDouble(s,_Digits);

// Print("制限レベル=",limit);

double e=_STOP*0.00001;

double n=e+1 とする。

double m=n*a;

double SL= NormalizeDouble(m,_Digits);

//Print("ストップレベル=",SL);

double p=_TP*0.00001;

double f=p+1;

double z=f*a;

double TP= NormalizeDouble(z,_Digits)とする。

double w=iOpen(NULL,PERIOD_D1,0);

double q=_ORDER*0.00001;

double j=q+1;

double v=w/j;

double limit1= NormalizeDouble(v,_Digits);

// Print("制限レベル=",limit);

double k=_STOP*0.00001;

double y=k+1;

double u=w/y;

double SL1= NormalizeDouble(u,_Digits);

//Print("ストップレベル=",SL);

double g=_TP*0.00001;

double _f=g+1;

double _m=w/_f;

double TP1= NormalizeDouble(_m,_Digits)とする。


if(Hour()==Nac)

{

if(iOpen(NULL,PERIOD_D1,0)<iOpen(NULL,PERIOD_D1,1))

{

if(!isTradeToDay(Symbol()))。

{

int ticket1=OrderSend(Symbol(),OP_SELLSTOP,1.5,limit1,3,SL1,TP1,NULL,0,0,clrRed); //ここでオープンする。

}

}

if(iOpen(NULL,PERIOD_D1,0)>iOpen(NULL,PERIOD_D1,1))

{

if(isTradeToDay(Symbol())の場合)

{

int ticket=OrderSend(Symbol(),OP_BUYSTOP,1.5,limit,3,SL,TP,NULL,0,0,clrBlueViolet); //ここでオープンする。

}

}

}

if(Hour()==Kon)

{

bool result;

int エラーです。

//----

while(OrdersTotal()>0)

{

if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),MarketInfo(OrderSymbol(),MODE_DIGITS),3,CLR_NONE).OrderTicketの値幅は、注文の種類によって異なります。

if(オーダータイプ()==OP_SELL)

result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_ASK),MarketInfo(OrderSymbol(),MODE_DIGITS)),3,CLR_NONE).となります。

if(OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP)

OrderDelete(OrderTicket())。

if(result!=TRUE)

{

error=GetLastError()です。

Print("LastError = ",error, ",Symbol());

}

さもなくば

error=0です。

}

さもなくば

Print("Error when order select ", GetLastError());

}

}

//+------------------------------------------------------------------+

//||

//+------------------------------------------------------------------+

return(0)です。

}

以下は、宣言された変数を 除いたコードです。

 
sibiriyak73:

code needs to be inserted Alt+S
and where is the function ?
how did you compile it ? no errors ?

 
Iurii Tokman:

code should be inserted Alt+S
and where is the function ?
how did you compile it ? no errors ?

機能は一番下にあります。コンパイルはエラーなし。売り方が、特定の商品について、他の商品の建玉があっても、その建玉を調整することができた。

の楽器があります。しかし、ベイサイドはティック ごとにトレードを発射して終わりです

 
Iurii Tokman:

code should be inserted Alt+S
and where is the function ?
how did you compile it ? no errors ?

現時点では、このようなコードになっています。セルサイドはすべてOKだが、バイサイドはすべてのティックが 取引となる
ファイル:
 
sibiriyak73:
現時点では、このようなコードになっています。セルサイドはすべてOKだが、バイサイドはすべてのティックが トレードになる

買い方でも同じことが言えます。

 
Iurii Tokman:

買い方も同じにするべし

isTradeToDay関数のどこを変更すれば、買い側と売り側で同じになるのかがわかりません。まだ買い側が動作しない :(

理由: