[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 232

 

Dmido писал(а) >>

ごきげんよう)


質問でおじゃまします。 EAの保留注文について理解不足でずっと避けていたのですが、ついに行き詰まりました。保留中の注文に価格を設定する方法がわかりません。BIDとASKの代わりに何を追加すればいいのでしょうか?それ以前に算出された変数も使用できますか?では、この価格をどのように設定すれば、後で注文を出すときに通るようになるのでしょうか?そんな値段はない、などとエラーが出るのですが......。


もしよろしければ、答えを暗号で説明していただいても...。あれだけ検索したのに、横文字ばかり・・・((

アスクとビッドの値の品質では、アイデアのアスクとビッドの現在の値、または以前に計算された変数を作用させる必要があります。

この値は、買い注文と売り注文の場合のみ、実際の値として扱われます。


最も良いのは、すべてのオーダーのオープニングを、少なくとも6つのプロシージャー、すなわちOrderSendBuy, OrderSendSell, OrderSendLimitBuy, OrderSendLimitSell, OrderSendStopBuy and OrderSendStopSell.


追記

なお、指値注文はベストプライス(現在値から一定ポイント数インデント)で、逆指値注文は現在値の上下に逆方向で発注されます。


マーケットからのオープニングコードの例。

//Procedure OrderSendBuy
void OrderSendBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

if( SizeTP>0){ TP = RealAsk+ SizeTP* SymbolPoint;}else{ TP = RealAsk+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid- SizeSL* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUY, LotsSize, RealAsk, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка открыть Market-Buy позицию по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создана позиция Market-Buy по паре ", WorkSymbol," Тикер новой позиции #", TicketNow);
Alert("Open market-Buy, ticket ", TicketNew," Open price ", RealAsk," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}


 

保留中の注文を設定するための コード例です。

//Procedure OrderSendLimitBuy
void OrderSendLimitBuy(string WorkSymbol, double LotsSize=0, int Slippage=3,int LimitStep=50,int SizeSL=0, int SizeTP=100,
string Text=NULL, int MN=0, datetime Expiration=0, color OrdrtColor=CLR_NONE)
{
//----------------------------------------------------------------------------//
// Служебные переменные
double RealAsk, RealBid; //Текущие Ask и Bid инструмента
double OpenPrice; //Цена на которую будет установлен отложник

double SymbolPoint; //Размер пункта текущего инструмента
double SL, TP; // StopLoss и TakeProfit будущей позиции

int TicketNew; //Тикер новой позиции (в случае удачи, иначе -1)
//----------------------------------------------------------------------------//
//Зашита от дурака
  if( LotsSize<MarketInfo( WorkSymbol,MODE_MINLOT)){ LotsSize = MarketInfo( WorkSymbol,MODE_MINLOT);}

//Расчет параметров для новой позиции
SymbolPoint = MarketInfo( WorkSymbol,MODE_POINT); //Определяем размер пункта
RealAsk = MarketInfo( WorkSymbol,MODE_ASK); //Определяем Ask
RealBid = MarketInfo( WorkSymbol,MODE_BID); //Определяем Bid

OpenPrice = RealAsk- LimitStep* SymbolPoint; //Цена на которую будет установлен отложник

if( SizeTP>0){ TP = OpenPrice+ SizeTP* SymbolPoint;}else{ TP = OpenPrice+100* SymbolPoint;}
if( SizeSL>0){ SL = RealBid-( SizeSL+ LimitStep)* SymbolPoint;}else{ SL = 0;}
//Попытка открыть позицию с рынка
TicketNew = OrderSend( WorkSymbol,OP_BUYLIMIT, LotsSize, OpenPrice, Slippage, SL, TP, Text, MN, Expiration, OrdrtColor);
//Проверка ошибок возникших при открытии новой позиции
if( TicketNew==-1)
//При открытии произошла ошибка
{
Print("Попытка создать Limit-Buy по паре ", WorkSymbol," окончилась неудачно. Код ошибки #",GetLastError())
;}
else
//Позиция успешно установлена
{
Print("Успешно создан ордер Limit-Buy по паре ", WorkSymbol," Тикер ордера #", TicketNow);
Alert("Create Limit-Buy, ticket ", TicketNew," Open price ", OpenPrice," Profit ", TP," SL ", SL);
}
//----------------------------------------------------------------------------//
}
 

こんにちは。

EAをテストしています。

期間 日(D1) 2008.09.01 00:00 ~ 2009.08.31 00:00 (2008.09.01~2009.09.01)。
モデル すべてのティック(利用可能な最小のすべての時間枠に基づく最も正確な方法)
歴史に残るバー 1259 モデル化されたダニ 8769661 モデリング品質 非対称性
チャートの不一致エラー 225

ミスマッチエラーが発生するのですが。避ける方法はないのでしょうか?これがエラーの数が多いのか少ないのか、よくわからない。スケールは緑と濃い緑が主体ですが、20%程度しか埋まっていません。また、シミュレーションのクオリティはn/aですが、問題ないでしょうか?

多分、私は注意を払うべきでない、私はただ理解できない・・・。

ありがとうございました。

 
RedFish >> :

こんにちは。

EAをテストしています。

期間 日(D1) 2008.09.01 00:00 ~ 2009.08.31 00:00 (2008.09.01~2009.09.01)。
モデル すべてのティック(利用可能な最小のすべての時間枠に基づく最も正確な方法)
歴史に残るバー 1259 モデル化されたダニ 8769661 モデリング品質 非対称性
チャートの不一致エラー 225

ミスマッチエラーが発生するのですが。避ける方法はないのでしょうか?これがエラーの数が多いのか少ないのか、よくわからない。スケールは緑と濃い緑が主体ですが、20%程度しか埋まっていません。また、シミュレーションのクオリティはn/aですが、問題ないでしょうか?

多分、私は注意を払うべきでない、私はただ理解できない・・・。

ありがとうございました。

私自身は、そのようなことを気にしたことがないのでわかりません(ほとんど可視化せずに戦略をテストしているので)。


同じようなテスト期間のJew D1での結果は以下の通りです。

試行回数1回目:履歴のバー - 1302ティック シミュレーション - 4313293 シミュレーションの質 - 50.00%.

試み2:履歴のバー - 1303 モデリングされたティック - 4323442 モデリング品質 - 50.00%.
チャートの不一致エラー - 0件。

 
Interesting писал(а)>>

私自身はそのようなことは気にしたことがないのでわかりません(私はほとんどいつも視覚化なしで戦略をテストしているので)。

同じようなテスト期間のJew D1での結果は以下の通りです。

試行回数1回目:履歴のバー -1302 ティック シミュレーション -4313293 シミュレーションの質 -50.00%.

試行回数2:履歴:1303 本-1303 ティックのシミュレーション-4323442 モデリング品質-50.00%。
チャート不一致のエラー -0.

ありがとうございます。

今考えているのは、MTが自動的に最後の512本のバーを埋め、残りを埋めるということです・・・。正確にはどう言えばいいのかわからない。私のExpert Advisorはトレンド系なので、距離が重要なのですが、512本というのは多すぎではないでしょうか。

他のシンボルについては、別サイトからダウンロードして、後からダウンロードすることも可能なのですね。

ありがとうございました。

 

こんにちは、親愛なる皆さん。

最近、天気のせいなのか、頭が悪いです。

1次元配列の要素 数を外部変数で設定する場合、(インジケータで)どのように宣言すればよいか教えてください。

ありがとうございます。

 
RedFish >> :

こんにちは。

EAをテストしています。

期間日(D1) 2008.09.01 00:00 ~ 2009.08.31 00:00 (2008.09.01~2009.09.01)。
モデルすべてのティック(利用可能な最小のすべての時間枠に基づく最も正確な方法)
歴史に残るバー1259モデル化されたダニ8769661モデリング品質非対称性
チャートの不一致エラー225

ミスマッチエラーが発生するのですが。避ける方法はないのでしょうか?これがエラーの数が多いのか少ないのか、よくわからない。スケールは緑と濃い緑が主体ですが、20%程度しか埋まっていません。また、シミュレーションのクオリティはn/aですが、問題ないでしょうか?

多分、私は注意を払うべきでない、私はただ理解できない・・・。

ありがとうございました。

私の下のIMHOが、引用されている-私は間違っている場合、私を修正してください。

ポイントは、M15の59分足の終値、45分足の終値、M30の30分足の終値、H1の終値が一致しない場合があることです。

一致させるためには、より小さい期間の引用のサーバーから履歴をダウンロードすることによって、あなた自身の履歴を殺す必要があります

をダウンロードし、ダウンロードした履歴を使用してすべてのタイムフレームを再計算します。

この場合、異なる時間軸のリアルクローズも一致しないことがあります。

つまり、小さい方のタイムフレームをとって、大きい方のタイムフレームの値をHANDで読めばいいのです。

 
alderru >> :

こんにちは、親愛なる皆さん。

最近、天気のせいなのか、頭が悪いです。

1次元配列の要素数を外部変数で設定する場合、(インジケータで)どのように宣言すればよいか教えてください。

ありがとうございます。

int y[];

extern int blah-blah = 100;

init() {

ArrayResize(y,blah-blah)です。

}

 
jartmailru писал(а)>>

私の下のIMHOが、引用であること、私が間違っている場合、私を修正してください。

実は、M15のクローズ59分、クローズ45分、M30のクローズ30分、H1のクローズは一致しない場合があります。

一致させるためには、より小さい期間の引用のサーバーから履歴をダウンロードすることによって、あなた自身の履歴を殺す必要があります

をダウンロードし、ダウンロードした履歴を使用してすべてのタイムフレームを再計算します。

この場合、異なる時間軸のリアルクローズも一致しないことがあります。

つまり、良い意味で、小さい方のタイムフレームをとって、大きい方のタイムフレームの値を読み取ることです。

О!ハンズ!!!

回答ありがとうございました。しかし、最初の部分から判断すると、このエラーは私にとって致命的なものではないことが理解できます。これらのエラーのメカニズムについて説明していただき、どうもありがとうございました。

 
皆さん、コードの問題は、助けることができます
for ( shift = CountBars; shift>=0; shift--) 
{ 
         cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift-1);
         cci2 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, shift);  

         if ( cci1>100) // (b4plusdi>b4minusdi && nowplusdi<nowminusdi)
         {
         val1[ shift]=Low[ shift]-5*Point;
         if ( flagval2==0) { Alert("не забудь отправить письмо о БАЙ"); flagval2=1; flagval1=0;}
         }
         if ( cci1<-100) //(b4plusdi<b4minusdi && nowplusdi>nowminusdi) 
         {
         val2[ shift]=High[ shift]+5*Point;
         if ( flagval1==0) { Alert("не забудь отправить письмо о СЕЛЛ"); flagval2=0; flagval1=1;}
         }
   }
   return(0);
}

を一番上に持ってきました。

int flagval1=0;
int flagval2=0;

このフラグについて具体的に悩んでいるのですが、どなたか再確認していただけませんか?

-----------------

と、EAコードにも問題があります。

//---------------------------------------------------------------- 5.1 
   cci1 = iCCI(NULL, 0, kCCI, PRICE_TYPICAL, 1);

   if ( New_Bar==true && cci1>100 && flagval2==1)                // && MA_3_t==0   && wayDOWN==true
     {                                            
         Opn_B=true; New_Bar=false; Cls_S=true;                                  
         flagval1=1;
         flagval2=0;
     }
     
   if ( New_Bar==true && cci1<-100 && flagval1==1)                 // && MA_4_t==0  && wayUP==true
     {                                                   
         Opn_S=true; New_Bar=false; Cls_B=true;
         flagval2=1;
         flagval1=0;
     }
//--------------------------------------------------------------- 6 --

トレーディングじゃないんだ!もしかしたら、誰かが新鮮な気持ちで見てくれるかもしれません。

は、100(-100)が取引に入ると同時にバカにすることにしました

EAを付ける!

ファイル:
stoch_cros.mq4  17 kb