コーディングのヘルプ - ページ 507

 
tristantsh:
mntiwanaさん、maldenさんありがとうございます。しかし、なぜまた購入しなければならないのでしょうか?メッセージでこれらのインジケータを送信することができます

そのインジケータを購入したときに受け取ったリンク付きのオリジナルのメールをsupport@forex-tsd.com に送ってください。すべてが正しければ、アップデート版が届きます。

 

しかし、nmc前のインジケータはnmc後よりも面白そうに見える。私の感覚だけでしょうか?

 
tristantsh:
でも、nmc前のインジケータの方がnmc後より面白そうなんですけど。私の感覚だけでしょうか?

nmc」バージョンの結果は、「pre-nmc」バージョンと比較して、全く変化していません。"nmc "は "new metatrader compatible "の略です。

お疲れ様でした

 

なぜ?

Mladenです。

このEAが動作しない理由を教えてください。

//----------------------- eaのパラメータ

外部文字列

Expert_Name = "---------- Pending Order EA v1",

Expert_Name2 = "---------- 現在の価格は、EntryLevel = 0を設定する";

外部ダブル

EntryLevel = 1.8600,

Distance = 100,

StopLoss = 50,

TakeProfit = 50。

TrailingStop = 50;

外部文字列

Order_Setting = "---------- 注文の設定";

外部 int

NumberOfTries = 5,

スリッページ = 5,

MagicNumber = 1234;

外部文字列

MM_Parameters = "---------- マネーマネジメント";

外部ダブル

ロット =0.01。

extern bool

MM = false, //マネーマネジメントを使用するかどうか

AccountIsMicro = true; //マイクロアカウントを使用するかどうか

外部int

リスク = 0; //10%。

外部文字列

Testing_Parameters= "---------- バックテストパラメーター";

extern bool

Show_Settings = true;

//グローバル変数

静的 int

TimeFrame = 0;

文字列

TicketComment = "PendingOrderEA v2",

LastTrade;

ブール

TradeAllow = true,

EntryAllow = true;

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

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

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

int init()

{

//----------------------- マジックナンバーとチケットコメントの生成

//---------------------- source : pengie

MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());

TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period()).これは、チケットコメントとマジックナンバーの両方を生成するためのものです。

//----------------------- チャートにEA設定を表示する

//----------------------- source : codersguru

if(Show_Settings) subPrintDetails();

else Comment("");

return(0);

}

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

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

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

int deinit()

{

//----------------------- ユーザーが時間枠を変更する際に再カウントを行わないようにする

//----------------------- ソース:codersguru

TimeFrame=Period()。

return(0);

}

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

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

int start()

{

ダブル

// BuyLevel,

SellLevel;

int

cnt,

チケット

合計

//----------------------- 買値と売値の設定

if(EntryLevel==0) EntryLevel = Bid;

// BuyLevel = EntryLevel + Distance*Point;

売りレベル = エントリーレベル - 距離*ポイント;

// if((買いレベル-売りレベル)<10*Point || (買いレベル-売りレベル)<10*Point))

// {

// Comment("無効なエントリー価格または距離");

// return(0);

// }

//----------------------- マネーマネジメントを使用している場合は、ロットを調整します。

if(MM) Lots = subLotSize();

//----------------------- ENTRY

//----------------------- マジックナンバーとシンボルに基づく総注文数

total = subTotalTrade();

//----------------------- 注文を1回だけ出す

if(TradeAllow)

{

//----------------------- 取引がない場合

if(total<1 && EntryAllow)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red).を送信します。

// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green).EntryAllow = false;

EntryAllow = falseです。

return(0);

}

if(total==1)

{

subDeleteOrder();

TradeAllow = false;

}

}

//----------------------- トレイリングストップセクション

if(TrailingStop>0 && subTotalTrade()>0)

{

total = OrdersTotal();

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL &&)

OrderSymbol()==Symbol() && OrderMagicNumber()

オーダーマジック番号()==マジック番号)

{

subTrailingStop(OrderType())。

return(0);

}

}

}

return(0);

//----------------------- プログラム終了

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

//| 関数定義

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

//----------------------- 資金管理機能

//----------------------- source : codersguru

double subLotSize()

{

double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;

if(AccountIsMicro==false) //通常口座の場合

{

if(lotMM < 0.1) lotMM = Lots;

if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

else //マイクロアカウント

{

if(lotMM < 0.01) lotMM = Lots;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

return (lotMM);

}

//----------------------- シンボルとマジックナンバー関数に基づく注文数

int subTotalTrade()

{

int

cnt,

total = 0;

for(cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderType()<=OP_SELL &&)

OrderSymbol()==Symbol() && OrderMagicNumber()

OrderMagicNumber()==MagicNumber) total++;

}

return(total);

}

//注文の削除関数

void subDeleteOrder()

{

int

cnt,

total = 0;

total = OrdersTotal();

for(cnt=total-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() && (オーダーシンボル))

オーダーマジック番号()==マジック番号)

{

switch(OrderType())

{

// ケース OP_BUYLIMIT :

// ケース OP_BUYSTOP :

ケース OP_SELLLIMIT

ケース OP_SELLSTOP :

OrderDelete(OrderTicket());

}

}

}

}

//----------------------- トレーリングストップ機能

//----------------------- ソース : codersguru

//----------------------- 修正したもの:FIREDAVE

void subTrailingStop(int Type)

{

if(Type==OP_BUY) // 買いのポジションが開かれる

{

if(Bid-OrderOpenPrice()>Point*TrailingStop &&)

オーダーストップロス()<ビッドポイント*トレイリングストップ)

{

注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

if(Type==OP_SELL) // 売りポジションがオープンされました。

{

if(OrderOpenPrice()-Ask>Point*TrailingStop)の場合。

{

if(OrderStopLoss()>Ask+Point*TrailingStop||OrderStopLoss()==0))。

{

オーダーモディファイ(オーダーチケット(),オーダーオープン価格(),アスク+ポイント*トレイリングストップ,オーダーテイクプロフィット(),0,レッド)。

return(0);

}

}

}

}

//----------------------- シンボルと時間軸を元にマジックナンバーを生成する関数

//----------------------- ソース : pengie

//----------------------- 修正したものFIREDAVE

int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)

{

int isymbol = 0;

if (symbol == "EURUSD") isymbol = 1;

else if (symbol == "GBPUSD") isymbol = 2; if (symbol == "USDJPY") isymbol = 2;

else if (symbol == "USDJPY") isymbol = 3;

else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDCAD") isymbol = 4;

else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "AUDUSD") isymbol = 5;

else if (symbol == "USDCAD") isymbol = 6;

else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURGBP")isymbol=7。

else if (symbol == "EURJPY") isymbol = 8;

else if (symbol == "EURCHF") isymbol = 9;

else if (symbol == "EURAUD") isymbol = 10;

else if (symbol == "EURCAD") isymbol = 11;

else if (symbol == "GBPUSD") isymbol = 12;

else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPJPY") isymbol = 13;

else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPCHF") isymbol = 14;

else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPAUD") isymbol = 15;

else if (symbol == "GBPCAD") isymbol = 16; else if (symbol == "GBPCAD") isymbol = 16;

else isymbol = 17;

if(isymbol<10) MagicNumber = MagicNumber * 10;

return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));

}

//-----------------------コメント関数を 表示する

//----------------------- ソース : codersguru

void subPrintDetails()

{

string sComment = "";

string sp = "-----------------------------------------------------------------------------n";

string NL = "\n";

sComment = sp;

sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";

sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";

sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL.Stop(StopLoss,0);。

sComment = sComment + sp;

sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ".Lots(Lots,1)となります。

sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";

sComment = sComment + "リスク=" + DoubleToStr(Risk,0) + "%" + NL;

sComment = sComment + sp;

コメント(sComment);

}

//----------------------- ブール変数から文字列への変換関数

//----------------------- ソース:codersguru

文字列 subBoolToStr ( bool 値 )

{

if(value) return ("True");

else return ("False")。

}

//----------------------- 関数終了

よろしくお願いします。

Jo

 

mladenです。

下記はコンパイル時に2つのエラーが発生します。

ファイル:
 
candyman752:
mladenさん、お元気でしょうか。下記はコンパイル時に2つのエラーが発生します。

キャンディマン752

試してみてください :rstochalert-4tf_1.mq4

ファイル:
 

親愛なるMLADEN。

(私の質問はいつも、コーディングのヘルプというより、修理のヘルプについてなのです。)

私の質問は...この方法で正しいのでしょうか...そして2番目の質問は、80行目に残っている2番目の警告についてです...このままにしておけば、機能に 問題はないのでしょうか...?

よろしくお願いします。

mntiwana

 
mntiwana:
親愛なるMLADEN。

(私の質問はいつも、コーディングのヘルプというよりも、修理のヘルプについてです)

私の質問は...この方法で正しいかどうかです...そして2番目の質問は、80行目でまだ残っている2番目の警告についてです...このままにしておけば、機能に問題はないのでしょうか...?

よろしくお願いします。

ムンティワナ

mntiwana

この方法ですべてOKです。

 
mladen:
mntiwana その方法ですべてOKです。あなたは変更を行いました OK

好奇心旺盛な学生を励ましてくれる偉大な上司に感謝します。

よろしくお願いします。

 
Jovager:
ムラデン

このeaが動作しない理由を教えてください。

//----------------------- eaのパラメータ

外部文字列

Expert_Name = "---------- Pending Order EA v1",

Expert_Name2 = "---------- For current price set EntryLevel = 0";

外部ダブル

EntryLevel = 1.8600,

Distance = 100,

StopLoss = 50,

TakeProfit = 50。

TrailingStop = 50;

外部文字列

Order_Setting = "---------- 注文の設定";

外部 int

NumberOfTries = 5,

スリッページ = 5,

MagicNumber = 1234;

外部文字列

MM_Parameters = "---------- マネーマネジメント";

外部ダブル

ロット =0.01。

extern bool

MM = false, //マネーマネジメントを使用するかどうか

AccountIsMicro = true; //マイクロアカウントを使用するかどうか

外部int

リスク = 0; //10%。

外部文字列

Testing_Parameters= "---------- バックテストパラメーター";

extern bool

Show_Settings = true;

//グローバル変数

静的 int

TimeFrame = 0;

文字列

TicketComment = "PendingOrderEA v2",

LastTrade;

ブール

TradeAllow = true,

EntryAllow = true;

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

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

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

int init()

{

//----------------------- マジックナンバーとチケットコメントの生成

//---------------------- source : pengie

MagicNumber = subGenerateMagicNumber(MagicNumber, Symbol(), Period());

TicketComment = StringConcatenate(TicketComment, "-", Symbol(), "-", Period()).これは、チケットコメントとマジックナンバーの両方を生成するためのものです。

//----------------------- チャートにEA設定を表示する

//----------------------- source : codersguru

if(Show_Settings) subPrintDetails();

else Comment("");

return(0);

}

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

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

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

int deinit()

{

//----------------------- ユーザーが時間枠を変更する際に再カウントを行わないようにする

//----------------------- ソース:codersguru

TimeFrame=Period()。

return(0);

}

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

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

int start()

{

ダブル

// BuyLevel,

SellLevel;

int

cnt,

チケット

合計

//----------------------- 買値と売値の設定

if(EntryLevel==0) EntryLevel = Bid;

// BuyLevel = EntryLevel + Distance*Point;

売りレベル = エントリーレベル - 距離*ポイント;

// if((買いレベル-売りレベル)<10*Point || (買いレベル-売りレベル)<10*Point))

// {

// Comment("無効なエントリー価格または距離");

// return(0);

// }

//----------------------- マネーマネジメントを使用している場合は、ロットを調整します。

if(MM) Lots = subLotSize();

//----------------------- ENTRY

//----------------------- マジックナンバーとシンボルに基づく総注文数

total = subTotalTrade();

//----------------------- 注文を1回だけ出す

if(TradeAllow)

{

//----------------------- 取引がない場合

if(total<1 && EntryAllow)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,SellLevel,Slippage,SellLevel+StopLoss*Point,SellLevel-TakeProfit*Point,TicketComment,MagicNumber,0,Red).を送信します。

// ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,BuyLevel,Slippage,BuyLevel-StopLoss*Point,BuyLevel+TakeProfit*Point,TicketComment,MagicNumber,0,Green).EntryAllow = false;

EntryAllow = falseです。

return(0);

}

if(total==1)

{

subDeleteOrder();

TradeAllow = false;

}

}

//----------------------- トレイリングストップセクション

if(TrailingStop>0 && subTotalTrade()>0)

{

total = OrdersTotal();

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL &&)

OrderSymbol()==Symbol() && OrderMagicNumber()

オーダーマジック番号()==マジック番号)

{

subTrailingStop(OrderType())。

return(0);

}

}

}

return(0);

//----------------------- プログラム終了

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

//| 関数定義

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

//----------------------- 資金管理機能

//----------------------- source : codersguru

double subLotSize()

{

double lotMM = MathCeil(AccountFreeMargin() * Risk / 1000) / 100;

if(AccountIsMicro==false) //通常口座の場合

{

if(lotMM < 0.1) lotMM = Lots;

if((lotMM > 0.5) && (lotMM < 1)) lotMM = 0.5;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

else //マイクロアカウント

{

if(lotMM < 0.01) lotMM = Lots;

if(lotMM > 1.0) lotMM = MathCeil(lotMM);

if(lotMM > 100) lotMM = 100;

}

return (lotMM);

}

//----------------------- シンボルとマジックナンバー関数に基づく注文数

int subTotalTrade()

{

int

cnt,

total = 0;

for(cnt=0;cnt<OrdersTotal();cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if(OrderType()<=OP_SELL &&)

OrderSymbol()==Symbol() && OrderMagicNumber()

OrderMagicNumber()==MagicNumber) total++;

}

return(total);

}

//注文の削除関数

void subDeleteOrder()

{

int

cnt,

total = 0;

total = OrdersTotal();

for(cnt=total-1;cnt>=0;cnt--)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol()==Symbol() && (オーダーシンボル))

オーダーマジック番号()==マジック番号)

{

switch(OrderType())

{

// ケース OP_BUYLIMIT :

// ケース OP_BUYSTOP :

ケース OP_SELLLIMIT

ケース OP_SELLSTOP :

OrderDelete(OrderTicket());

}

}

}

}

//----------------------- トレーリングストップ機能

//----------------------- ソース : codersguru

//----------------------- 修正したもの:FIREDAVE

void subTrailingStop(int Type)

{

if(Type==OP_BUY) // 買いのポジションが開かれる

{

if(Bid-OrderOpenPrice()>Point*TrailingStop &&)

オーダーストップロス()<ビッドポイント*トレイリングストップ)

{

注文変更(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

return(0);

}

if(Type==OP_SELL) // 売りポジションがオープンされました。

{

if(OrderOpenPrice()-Ask>Point*TrailingStop)の場合。

{

if(OrderStopLoss()>Ask+Point*TrailingStop||OrderStopLoss()==0))。

{

オーダーモディファイ(オーダーチケット(),オーダーオープン価格(),アスク+ポイント*トレイリングストップ,オーダーテイクプロフィット(),0,レッド)。

return(0);

}

}

}

}

//----------------------- シンボルと時間軸を元にマジックナンバーを生成する関数

//----------------------- ソース : pengie

//----------------------- 修正したものFIREDAVE

int subGenerateMagicNumber(int MagicNumber, string symbol, int timeFrame)

{

int isymbol = 0;

if (symbol == "EURUSD") isymbol = 1;

else if (symbol == "GBPUSD") isymbol = 2; if (symbol == "USDJPY") isymbol = 2;

else if (symbol == "USDJPY") isymbol = 3;

else if (symbol == "AUDCAD") isymbol = 4; else if (symbol == "AUDCAD") isymbol = 4;

else if (symbol == "AUDUSD") isymbol = 5; else if (symbol == "AUDUSD") isymbol = 5;

else if (symbol == "USDCAD") isymbol = 6;

else if (symbol == "EURGBP") isymbol = 7; else if (symbol == "EURGBP")isymbol=7。

else if (symbol == "EURJPY") isymbol = 8;

else if (symbol == "EURCHF") isymbol = 9;

else if (symbol == "EURAUD") isymbol = 10;

else if (symbol == "EURCAD") isymbol = 11;

else if (symbol == "GBPUSD") isymbol = 12;

else if (symbol == "GBPJPY") isymbol = 13; else if (symbol == "GBPJPY") isymbol = 13;

else if (symbol == "GBPCHF") isymbol = 14; else if (symbol == "GBPCHF") isymbol = 14;

else if (symbol == "GBPAUD") isymbol = 15; else if (symbol == "GBPAUD") isymbol = 15;

else if (symbol == "GBPCAD") isymbol = 16; else if (symbol == "GBPCAD") isymbol = 16;

else isymbol = 17;

if(isymbol<10) MagicNumber = MagicNumber * 10;

return (StrToInteger(StringConcatenate(MagicNumber, isymbol, timeFrame)));

}

//----------------------- コメント関数を表示する

//----------------------- source : codersguru

void subPrintDetails()

{

string sComment = "";

string sp = "-----------------------------------------------------------------------------n";

string NL = "\n";

sComment = sp;

sComment = sComment + "TakeProfit=" + DoubleToStr(TakeProfit,0) + " | ";

sComment = sComment + "TrailingStop=" + DoubleToStr(TrailingStop,0) + " | ";

sComment = sComment + "StopLoss=" + DoubleToStr(StopLoss,0) + NL.Stop(StopLoss,0);。

sComment = sComment + sp;

sComment = sComment + "Lots=" + DoubleToStr(Lots,2) + " | ".Lots(Lots,1)となります。

sComment = sComment + "MM=" + subBoolToStr(MM) + " | ";

sComment = sComment + "リスク=" + DoubleToStr(Risk,0) + "%" + NL;

sComment = sComment + sp;

コメント(sComment);

}

//----------------------- ブール変数から文字列への変換関数

//----------------------- ソース:codersguru

文字列 subBoolToStr ( bool 値 )

{

if(value) return ("True");

else return ("False")。

}

//----------------------- 関数終了

よろしくお願いします。

ジョー

Jo,

mq4ファイルを添付していただけませんか?この方法でテストするのは非常に困難です