[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 412

 

皆さんこんにちは!ワグルエキスパートを書いている時、より正確な出口ポイントを探していて、RSI(8)とADX(25)のクロスに出会いました。デモの手動取引では、視覚的にすべてがうまくいっています。

RSI(8)とADX(25)の交差条件の書き方について質問です DI + 例えば、RSI(8)には0から100までの境界があり、ADX(25)には境界がない場合。つまり、境界がないチャートにADXを投げ、その上にRSIを投げれば、RSIは最大と最小ADXでスケールします もしADXで0から100まで境界を指定すれば、RSIとの交差を明確にできるものはごく少数になります。

ADXでスケーリングしたときのRSIの値を定義することは可能でしょうか。

 
PapaYozh:

いいえ
?...差し支えなければ、もう少し詳しいご回答を...。そして、WindowHandle関数が何のためにあるのかを明確にするために、少なくとも簡単なスクリプトを例として示していただけると幸いです。
 
drimara: つまり、境界線を指定せずにADXをチャートに投げ、その上にRSIを投げれば、RSIは最大と最小のADXでスケールします。ADXが0から100の境界線で指定されている場合、ADXとRSIの間に明らかなクロスオーバーはほとんどないでしょう。

ADXでスケーリングしたときのRSIの値を定義することは可能でしょうか。

そして、それを左右に動かすと、クロスオーバーポイントが迷走し始めます
 
iCustomで接続した場合、非標準のインジケータのパラメータ数に制限はありますか?

パラメータが8個ほどあるインジケータがあるのですが、パラメータをすべて正しく入力し、何度もチェックしたのですが、コンパイル時にエラー「)」が出たままです。- wrong parameters count D:\InstaTrader⇄Experts⇄2.mq4 (11, 280)
 
sss2019:
iCustomで接続した場合、非標準のインジケータのパラメータ数に制限はありますか?

パラメータが8個ほどあるインジケータがあるのですが、パラメータをすべて正しく入力し、何度もチェックしたのですが、コンパイル時にエラー「)」が出たままです。- wrong parameters count D:\InstaTrader⇄Experts⇄2.mq4 (11, 280)
インジケータにコード+入力パラメータを表示
 
7777877:
?...差し支えなければ、もう少し詳しいご回答を...。また、WindowHandle関数が何のためにあるのかを理解するために、少なくともいくつかの簡単なスクリプトを例として示していただけると幸いです。


今のあなたの知識レベルでは、あまり必要ないのでは?

プログラマーになりたいという思いがあるなら、Googleの 力を借りて科学を噛みしめましょう。クエリ "ウィンドウ記述子 site:mql4.com"

 
プログラミングの達人に教えていただきたいのですが、このアドバイザーを作ることは現実的なのでしょうか?
 
stater:
プログラミングの第一人者に、このアドバイザーを作ることは現実的なのか、私の質問について教えてくださいとお願いしています。

望めば、何でも可能です。

をご覧ください。

1)バーオープン制御

2)オーダーセンド

試行錯誤し、達人が修正する

 

クロスだけでなく、ローソクのCLOSEで注文が開くようにするEAを紹介します。

誰が事前にありがとうを助けるでしょう。

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

//| RSI_MA.mq4||||。

//| Copyright © 2008, AEliseev k800elik@gmail.com |.

//| http://www.metaquotes.net |

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

#property copyright"Copyright © 2008, Andrey E. k800elik@gmail.com"。

#プロパティリンク "http://www.metaquotes.net"


//---- 入力パラメータ

extern CCI_Per=14;

extern MA_Per=20;

extern CCI_close_Per=14;

extern double TakeProfit=500;

extern double StopLoss=150;

extern double Lots=0.01;

extern inttern Deposit=1000;

extern bool MM=false;

extern inttern _MagicNumber=131313;

extern int_Sleep=5000;


int LotA=1, Err=0;

int j=0; var2,var1;

int counter=0;

int ticketです。

bool var3;


bool order=false。


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

//| エキスパート初期化関数

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

int init()

{

Comment("CCI_MA v1.5 © 2008, Andrey E. k800elik@gmail.com")。

return(0)です。

}

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

//| 専門家による初期化関数

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

int deinit()

{

/* int i, a1, a2;

//----

if (注文合計()>0)

{

for (i=0; i==OrdersTotal(); i++)

{

OrderSelect(i,SELECT_BY_POS);

if (OrderMagicNumber()==131313)

{

a1=OrderClose(LotA*Lots,Ask,5,Red)となります。

//a2=OrderClose(var1,LotA*Lots,Ask,5,Red)となります。

}

}

}*/

return(0)です。

}

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

//| エキスパートスタート機能

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

int start()

{

//----

if (isNewBar())EveryBar()です。

EveryTick()です。

//----

return(0)です。

}

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


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

//|新しいバーをチェックする

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

bool isNewBar()

{ static datetime TimeBar=0;

bool flag=false。

if(TimeBar!=Time[0])とする。

{

TimeBar=Time[0]です。

flag=true とする。

}

return(flag)です。

}

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

//| 新しいバーが表示されたらアクションを実行する。

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

void EveryBar()

{

// Print("新しいバーが届きました!")

double MA[100]、CCI[100]、CCIclose[100]、StandDevi[100]。

int i,limit=ArraySize(CCI);

ダブルSL、TP

スリープ(_Sleep)。

SL = NormalizeDouble(Ask - StopLoss*Point, Digits)です。

TP = NormalizeDouble(Ask + TakeProfit*Point, Digits)です。

for(i=0; i<limit; i++)

{

CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);

CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);

MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);

}

// 新しい注文を出すのに十分な資金があるかどうかチェックする

if(AccountFreeMargin()<(1000*Lots))

{

Print("We have no money.フリーマージン = ", AccountFreeMargin());

return(0)です。

}

//=================================================================================

int _GetLastError = 0, _OrdersTotal = OrdersTotal();

//----- すべてのオープンポジションに目を通す

for ( int z = _OrdersTotal - 1; z >= 0; z -- )

{

//---- 位置の選択中にエラーが発生した場合、次の位置へ進む

if ( !OrderSelect( z, SELECT_BY_POS ) )

{

_GetLastError = GetLastError()。

Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);

を続ける。

}

// 位置が現在のシンボルのために開かれていない場合、それはスキップされます。

if ( OrderSymbol() != Symbol() ) continue;

// MagicNumber が _MagicNumber と等しくない場合、スキップする。

// この位置

if ( OrderMagicNumber() != _MagicNumber ) continue;

//- BAYポジションが開いている場合。

if ( OrderType() == OP_BUY ) )

{

//---- CCIがライン190を下向きにクロスした場合

if (((CCIclose[2]>190) && (CCIclose[1]<=100)) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]) ).

{

//---- クローズ位置

if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 10, Green ) )

{

_GetLastError = GetLastError()。

Print("OrderCloseエラー# , _GetLastError );

Err=1です。

return(-1)です。

}

}

// シグナルが変化しなかった場合、終了 - 開放するには早すぎる。

//新しい位置

さもなくば

{ return(0); }.

}

//---- 売りポジションが開かれた場合。

if ( OrderType() == OP_SELL )

{

//---- CCIが上方のライン-190を越えたら。

if (((CCIclose[2]<-190) && (CCIclose[1]>=-300)) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])))

{

//---- クローズ位置

if(!OrderClose( OrderTicket(), OrderLots(), Ask, 10, Red ) )

{

_GetLastError = GetLastError()。

Print("OrderClose error # ", _GetLastError );

Err=2;

return(-1)です。

}

}

// シグナルが変化しなかった場合、終了 - 開放するには早すぎる。

// 新しい位置

else return(0);

}

}

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

//| 実行がこのポイントに達した場合、開いているポジションはありません。

//| ポジションを開くことが可能かどうかをチェックします。

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

スリープ(_Sleep)。

CCIがMACDを下から上へクロスした場合 //----。

SL = NormalizeDouble(Bid - StopLoss*Point, Digits)です。

TP = NormalizeDouble(Bid + TakeProfit*Point, Digits)です。

if ((CCI[1]>MA[リミット- MA_Per-1]) && (CCI[2]<MA[limit-MA_Per-2]))

{

//---- オープン BAY ポジション

if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 5, SL, TP, "CCI_test_buy", _MagicNumber, 0, Green ) < 0 )

{

_GetLastError = GetLastError()。

Print( "OrderSend OP_BUY error # ", _GetLastError );

Err=3。

return(-1)です。

}

return(0)です。

}

CCIがMACDを上から下までクロスした場合 //----。

SL = NormalizeDouble(Ask + StopLoss*Point, Digits)です。

TP = NormalizeDouble(Ask - TakeProfit*Point, Digits)です。

if ((CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>MA[limit-MA_Per-2]))

{

//----- 売りポジションをオープン

if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 5, SL, TP, "CCI_test_close", _MagicNumber, 0, Red ) < 0 )

{

_GetLastError = GetLastError()。

Print("OrderSend OP_SELL error # ", _GetLastError );

Err=4;

return(-1)です。

}

return(0)です。

}

}

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

//| 価格が変わるごとに計算を実行する|?

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

void EveryTick()

{

int i;

if (MM==true)

{

if (AccountBalance()>(2*Deposit))LotA=2です。

if (AccountBalance()>(3*Deposit))LotA=3。

if (AccountBalance()>(4*Deposit))LotA=4です。

if (AccountBalance()>(5*Deposit))LotA=5。

if (AccountBalance()>(6*Deposit))LotA=6; if (AccountBalance()>(6*Deposit); LotA=6;

if (AccountBalance()>(7*Deposit))LotA=7。

if (AccountBalance()>(8*Deposit))LotA=8。

if (AccountBalance()>(9*Deposit))LotA=9。

if (AccountBalance()>(10*Deposit))LotA=10です。

if (AccountBalance()>(11*Deposit))LotA=11。

if (AccountBalance()>(12*Deposit))LotA=12です。

if (AccountBalance()>(13*Deposit))LotA=13。

if (AccountBalance()>(14*Deposit))LotA=14。

if (AccountBalance()>(15*Deposit))LotA=15。

if (AccountBalance()>(16*Deposit))LotA=16。

if (AccountBalance()>(17*Deposit))LotA=17。

if (AccountBalance()>(18*Deposit))LotA=18。

if (AccountBalance()>(19*Deposit))LotA=19。

if (AccountBalance()>(20*Deposit))LotA=20です。

}

int _GetLastError = 0, _OrdersTotal = OrdersTotal();

int z;

ダブルSL、TP

double MA[100]、CCI[100]、CCIclose[100]、StandDevi[100]。

int limit=ArraySize(CCI)。

for(i=0; i<limit; i++)

{

CCI[i]=iCCI(NULL,0,CCI_Per,PRICE_CLOSE,i);

CCIclose[i]=iCCI(NULL,0,CCI_close_Per,PRICE_CLOSE,i);

MA[i]=iMAOnArray(CCI,0,MA_Per,0,MODE_SMA,i);

}

スイッチ(Err)

{

ケース1

for ( z=_OrdersTotal - 1; z >= 0; z -- )

{

if ( !OrderSelect( z, SELECT_BY_POS ) )

{

_GetLastError = GetLastError()。

Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);

を続ける。

}

if ( OrderSymbol() != Symbol() ) continue;

if ( OrderMagicNumber() != _MagicNumber ) continue;

if ( OrderType() == OP_BUY ) )

{

if (((CCIclose[2]>300) && (CCIclose[1]<=300) || (CCI[1]<MA[limit-MA_Per-1]) && (CCI[2]>=MA[limit-MA_Per-2]) ))

{

if ( !OrderClose( OrderTicket(), OrderLots(), Bid, 5, Green ) )

{

_GetLastError = GetLastError()。

Print("CASE OrderClose error # , _GetLastError );

Err=1です。

return(-1)です。

}

else Err=0;

}

}

}

が壊れる。

//=============================================================================

の場合 2.

for ( z=_OrdersTotal - 1; z >= 0; z -- )

{

if ( !OrderSelect( z, SELECT_BY_POS ) )

{

_GetLastError = GetLastError()。

Print("OrderSelect( ",z, ", SELECT_BY_POS ) - Error #", _GetLastError);

を続ける。

}

if ( OrderSymbol() != Symbol() ) continue;

if ( OrderMagicNumber() != _MagicNumber ) continue;

if ( OrderType() == OP_SELL )

{

if (((CCIclose[2]<-300) && (CCIclose[1]>=-300) || ((CCI[1]>MA[limit-MA_Per-1]) && (CCI[2]<=MA[limit-MA_Per-2])))

{

if(!OrderClose( OrderTicket(), OrderLots(), Ask, 5, Red ) )

{

_GetLastError = GetLastError()。

Print("CASE OrderClose error # ", _GetLastError );

Err=2;

return(-1)です。

}

else Err=0;

}

}

}

が壊れる。

//==============================================================================

ケース 3.

SL = NormalizeDouble(Bid - StopLoss*Point, Digits)です。

TP = NormalizeDouble(Bid + TakeProfit*Point, Digits)です。

if(OrderSend( Symbol(), OP_BUY, LotA*Lots, Ask, 7, SL, TP, "AI_test_buy", _MagicNumber, 0, Green ) < 0 )

{

_GetLastError = GetLastError()。

Print( "CASE OrderSend OP_BUY error # ", _GetLastError );

Err=3。

return(-1)です。

}

else Err=0;

が壊れる。

//===================================================================================

ケース 4.

SL = NormalizeDouble(Ask + StopLoss*Point, Digits)です。

TP = NormalizeDouble(Ask - TakeProfit*Point, Digits)です。

if(OrderSend( Symbol(), OP_SELL, LotA*Lots, Bid, 7, SL, TP, "AI_test_close", _MagicNumber, 0, Red ) < 0 )

{

_GetLastError = GetLastError()。

Print("CASE OrderSend OP_SELL error # ", _GetLastError );

Err=4;

return(-1)です。

}

else Err=0;

が壊れる。

}

}

 
Neo777:

クロスだけでなく、ローソクのCLOSEで注文が開くようにするEAを紹介します。

注文の開封方法を教えてほしい。


また、このティックでバーが閉じることをどうやって知るつもりなのでしょうか?新しいバーの 開店によってかもしれませんね。

ボタンSRCでコードが挿入されます