【FX】レイヤートレードEAの基本のところ

レイヤートレードの設定画面はこのような感じです。

TradeIntervalは5秒、TradeCountは10、SLは50、TPは60、ロットサイズは0.01でやるということです。
金の場合、SLは5ドル、TPは6ドルと設定しています。(SLはある程度のバッファーをイメージしています

シグナルは大文字小文字に関わらず、buy, sell, close, secure で反応するように設定しています。

プログラム

//+——————————————————————+
//| Expert initialization function |
//+——————————————————————+
input int TradeInterval = 5; // 秒数(間隔)
input int TradeCount = 10; // トレード回数
input double SL = 50.0; // ストップロス(ピップス)
input double TP = 60.0; // テイクプロフィット(ピップス)
input double LotSize = 0.01; // ロットサイズ
input string SignalFileName = “signal.txt”; // シグナルファイル名
input int MAGIC_NUMBER = 123456; // MAGIC_NUMBERをパラメータとして設定

int startTime;
bool isTrading = false;
int currentTrade = 0;

//+——————————————————————+
//| Expert initialization function |
//+——————————————————————+
int OnInit()
{
startTime = TimeCurrent();
Print(“EA Initialized.”);
return(INIT_SUCCEEDED);
}

//+——————————————————————+
//| Expert tick function |
//+——————————————————————+
void OnTick()
{
// ファイルからシグナルを読み込み
string signal = ReadSignalFromFile();

Print(“Signal read: “, signal);

// “CLOSE ALL”, “ALLCLOSE”, “close all”, “allclose” で全てのトレードをクローズ
if(signal == “CLOSE ALL” || signal == “ALLCLOSE” || signal == “close all” || signal == “allclose”)
{
CloseAllTrades();
ClearSignalFile(); // シグナルファイルをクリア
Print(“All trades closed and signal file cleared.”);
return;
}

// トレードが実行中でない場合、シグナルに基づいてトレードを開始
if(!isTrading && (signal == “BUY” || signal == “SELL” || signal == “buy” || signal == “sell”))
{
isTrading = true;
currentTrade = 0;
startTime = TimeCurrent();
Print(“Trading started: “, signal);
}

// トレードを開始している場合、指定した秒数間隔でトレードを実行
if(isTrading && currentTrade < TradeCount)
{
if(TimeCurrent() – startTime >= TradeInterval)
{
if(signal == “BUY” || signal == “buy”)
{
OpenBuy();
}
else if(signal == “SELL” || signal == “sell”)
{
OpenSell();
}
currentTrade++;
startTime = TimeCurrent(); // 次のトレードのために時間をリセット
}
}

// 指定回数のトレードが完了した場合、トレードフラグをリセットしファイルをクリア
if(currentTrade >= TradeCount)
{
isTrading = false;
ClearSignalFile(); // ファイルをクリア
Print(“Trading completed. Signal file cleared.”);
}
}

//+——————————————————————+
//| シグナルファイルからシグナルを読み込む |
//+——————————————————————+
string ReadSignalFromFile()
{
int fileHandle = FileOpen(SignalFileName, FILE_READ|FILE_TXT);
string signal = “”;
if(fileHandle > 0)
{
signal = FileReadString(fileHandle);
FileClose(fileHandle);

// 余分なスペースや改行を削除
signal = StringTrimLeft(signal);
signal = StringTrimRight(signal);
}
else
{
Print(“Failed to open signal file.”);
}
return signal;
}

//+——————————————————————+
//| Buyポジションを開く |
//+——————————————————————+
void OpenBuy()
{
double sl = Bid – SL * MarketInfo(Symbol(), MODE_POINT) * 10;
double tp = Bid + TP * MarketInfo(Symbol(), MODE_POINT) * 10;
int ticket = OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, sl, tp, “Layer Buy”, MAGIC_NUMBER, 0, Green);

if(ticket < 0)
{
Print(“Buy OrderSend failed with error #”, GetLastError());
}
else
{
Print(“Buy Order sent: Ticket#”, ticket);
}
}

//+——————————————————————+
//| Sellポジションを開く |
//+——————————————————————+
void OpenSell()
{
double sl = Bid + SL * MarketInfo(Symbol(), MODE_POINT) * 10;
double tp = Bid – TP * MarketInfo(Symbol(), MODE_POINT) * 10;
int ticket = OrderSend(Symbol(), OP_SELL, LotSize, Bid, 3, sl, tp, “Layer Sell”, MAGIC_NUMBER, 0, Red);

if(ticket < 0)
{
Print(“Sell OrderSend failed with error #”, GetLastError());
}
else
{
Print(“Sell Order sent: Ticket#”, ticket);
}
}

//+——————————————————————+
//| シグナルファイルをクリアする |
//+——————————————————————+
void ClearSignalFile()
{
int fileHandle = FileOpen(SignalFileName, FILE_WRITE|FILE_TXT);
if(fileHandle > 0)
{
FileWrite(fileHandle, “”); // ファイルをクリア
FileClose(fileHandle);
}
else
{
Print(“Failed to open signal file for clearing.”);
}
}

//+——————————————————————+
//| 全てのポジションをクローズする |
//+——————————————————————+
void CloseAllTrades()
{
for(int i = OrdersTotal() – 1; i >= 0; i–)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
int orderType = OrderType();
double closePrice;
if(orderType == OP_BUY)
{
closePrice = Bid;
}
else if(orderType == OP_SELL)
{
closePrice = Ask;
}
else
{
continue; // 他の注文タイプはスキップ
}

bool result = OrderClose(OrderTicket(), OrderLots(), closePrice, 3, clrNONE);
if(result)
{
Print(“Order closed: Ticket#”, OrderTicket());
}
else
{
Print(“Failed to close order: Ticket#”, OrderTicket(), ” Error #”, GetLastError());
}
}
}
}
//+——————————————————————+

FX

ディープフェイク・AI詐欺の最新手口 ❄️ 声も顔も信用できない時代へ——2026年、生成AIが詐欺を「産業化」した全手口と1210%増加の衝撃
2025年、AI詐欺は前年比1,210%という数字で急増した。従来の詐欺全体の増加率が195%であったことを考えると、この数字の異常さは明白である。生成AIの登場は詐欺の「質」と「量」を同時に爆発させ、人間の感覚器官——視覚と聴覚——を信頼の根拠にすることをほぼ不可能にした。 🧸「1210%って……もはや別次元の数字だよね。しろくまちゃん、具体的にどんな手口があるの?」 🐻‍❄️「フォフォ、今から5つの主要手口を解説するのじゃ。聞いているうちに「これはもう人間には止められない」と思うかもしれんが、最後まで聞いておくれ🐻‍❄️✨」 手口①——ディープフェイク動画:顔が見えても「本人」ではない 実在の経営者、著名投資家、芸能人の顔と声を精巧に合成した動画が、投資広告として拡散されている。かつては唇の動きのズレや不自然な瞬きで見分けることができたが、2026年現在のディープフェイク技術はそのような「粗さ」を完全に排除している。ScamWatch HQのデータでは、2025年にディープフェイク動画詐欺は700%急増し、ある専門機関は2025年第4四半期だけで15万9千件以上の事例を検知

続きを読む

6ステップ詐欺プロセスの全解剖 ❄️ タップした瞬間から始まっている——SNS投資詐欺「6段階の罠」を完全図解、あなたはどこで気づけるか
40代・50代が狙われる理由と心理の罠 ❄️「自分は騙されない」と思っている人ほど危ない——2026年SNS投資詐欺、中高年が標的になる本当の理由
【FX検証】SODA(CRT2nd) 建設的評価 🐻‍❄️ 報告135pips vs 推測797pips超・SLトレーリング戦略の柔軟検証(2026年3月9日〜16日)
【FX検証】SODA(TTT)建設的評価🐻‍❄️ 報告+1,356pips/推測+67pips・報告+196万円/推測+10万円の柔軟的検証(2026年2月9日-15日)

「FX」記事をもっと見る