0100100011111001110100100101011110100011101001011100110111101101111001001011100111100101110000111010011011101010101001000010000111010011100100100011100100000011010011110110000111101110111101100110011101000001001000001010111101011100011111110101010000111100010101001110000000010100111111101101000000001000001101110101101101010101111001100011010101101110011011101011011100111011110101100110000101010100 1111111101011000111010001110101110100010010011011010000000111011110011110100001101010010100100100010101011100000111101110111100001000010010010001000110101010101100110110110110110101110010100010000011111101011011010010010001011101110010011110100110010011010110010011000011101011110111101011010101011001000010010110100011010101001011100101101001101011101001111010001001010100010000000100111101111100100 0010101001101101010000000000101000011011100110100011011111100010101010010100101100011000001000101000101100100101111011100011010100101011011010111110100110001101111000011111111111110101001111101011011101000110100111010100010101111000000100011010001000110000001100111010110010000001100011100011110101111110111000111011111100110110001100001111011001010001100010010100000011011100011010011011101011010110 0010101101001010100011011001101010100001101100000000110001100101010011100010100101000000000111001001011111110111111011000000000100111001111000001011011101110011110111010000100110111111111011111100111100010111001000011001100110110010010101100111010000110111110011011110100000111011100010101010011010010011110111110111101101011001001111100101101011100010110011101001101011110111101010100111011101101001 1001001011100000011010011011010110100000010111001010111011110111110001001100011001001001111010110001110100010011101001001010010010000010111010101001100010110010001101010110011110100111110110111011010101111110000100000011001111100101001100010000010001000111010011111010101001000101011000010101001010000111000001001000110010100001111100111110011011011110110010011101000011100010110111100100011111000001 0000111011110011010111000000111011100011010101000110101101000011000010111011000010010001001101110101111110010010111100000000001101010000000111101010110010000000000100000100001001001001101011100001100111110000011110110101100010010011100000100110111100000100011010000011000001111001011111110101101101110111010001101100001111100111001000111001101110111110000101111010111100000101101100010110010000011111 0000110000101000011111011110101001011011010111001001101101111000111011011101010100000100110101110000000011011011101110001111000110010111100110001001101001010010000101111110000111001000101000110001001111110011000011100000100110001011101101111111101011010011100110111000011001000110111010110111101101111101001100010110110001001011011110010011011110110010110010100011010001110000001001100010110111100001 0100110001100100011100100100000000011101001110001111001011000100000000001111111100100001000010001000011000001001111010010111100111101101110011000010111010001101110110001001100001101111101101000101010010011011111110100110110000011111100001010010011000010111001100010010101100110101010110001100111011111100001000100110110011111010110000001110001100101011101000011111100011001001011010001110010101101110 1011000101111000011100110001011011110001011010110101000111110001001101001010111000011101001000011011000110111010010100010011111000001000010100110100101110011000011000110101010100110101100001111100111000111100110100010100110100100010111000101111101011100100000010001010101000000011111101110100000011000001110011101010001010011010100110110001010011110111001101011111000011010001110110001011001101110111 0110110111110010100110011000000110010100011100101001100011000001111000100111010100100100010001011000011000101000100010010000110110100010011000010001011100000111111101100111010011000100010110100001110011100110100010010000101101010011100011001101101110010110101110011010000101111101010101111000010110011111001011111010101010100010110111111010000000111100010011001111010010100101110010110110111011111011 1101011000000011001111100011100100101101000001101000001100110100100001100110110111111101011111010000011101110001101010011110011001110001000011101000101101001100001111111001010100011011001011111001100001001100000110101000100001101000110010110011000101010100011011010110010100110110110010100101011011001111101010010010111100011010100000110010010001011100100001111111000111000010000001010011011010100111 1110001011001100101010011000101011100110111100000110110001110101000110001110011011101001000100010010101000110010101101101110010110000011011111111010111010011101001001001001011100000100010110011010111001110101101010011111100100010001001100001111100000011101101010101001011010100100010000011000011011001001111011100011100000010001101011111001101110010101001100010010010101000001111000011010000000000011 1100001111001101011010010000111111100110100011111110100111001110111001110110110100001100001100100111110110011111010110010110100000011011110000010110111011100010111110010100110100011010111111100011101100111011100101001110010100100011010000011011111101011111011011100110000010010111011011000010100110011010001000100101100010010001100011010101111001000000100110100010100111100010100100011001111010010000 1101010110101100100100000100111010011011101011111010110000011001101010011110011101101110110011101011100001000100101101110110001100111010000110000011000101011111001010001010110100111100000111001000111111010100011011011110110010001001001001011110001101011100000110111101010000001001110100011010010010110001011001010011110010111010111111111010010111011001110101001010001010000111000000101011110110110100 0111001001110111001101011010000111001001111010111101101111000100111011100100101000100001001110001111100010111001111001101011001111001000101010000111101111000011110110110011110110101100101110011001011111001100000001100111110001101111010001101001000000111101011100111001101100111011111101100110101101101111111010011011001010110010010011010100101111010110001011000111111101101111001001011000110001001101 1110110011100110011110000111100001101001000111011000100001101100111001010000111111010101110001100000010000101000110111000100011011111010010101100101100010010101011111001011100100110001000100100101010000101110111111110111100001111001110111111101010001100100100100011001010001011111011100001110110110111100110010000010010111011001110111001110101001000000001101100100010111011111010011110100010101110010 0010001001101000010110000001100111000010111111000010111110001110111111010110011010011001011001001011101111101111001010001000101100010110111100101110010011000101001101110000010101001100011011010010000011111000001111001110111001000011010111111011010111010110100101100101010110110100110010111010101110111101110101110111000110000001001100101011101110011011010010110100110110000100101000010011111110111100 1100110101000000100111011111001110000100101100100100011001101010000001111110001011001100001000101110110010100000001001110001001001000011010011001000001101101111011111010101101101000111101101010000010011101110110100001100011010101001100001110001110111100110000111111111000001010110010010001100001010110000100101100111001101000111111100111010101111011000110110110001101110110101111100111101000101110011 0001001100000110010100010001101000011111000010100010010111000100011010101000000100010011100100000100100000110100111000010111010011001000100010011101011110001001001011010010110101100010101101000000011000110111000111101000011110100010001100011111101101111011101101110101000011101001000001110011000011001111100100011011000101010001110001000011100111001000001111111111100100010010111011110110111001001101 0111010011000010101001111011101001000110010110101100110001110011000001000010100011011100001101001111100000001100010100001000011011010111101001011111000010111111000110100011010111001000101110011100010101001001001010101111010011101110110010100110001001001010100101101011000110010011101101110000010011010110110000101110010111111101100101101101110111110111101010011000010100111100101000000000011111011001 0101100111111111001001010010000011000010001000011111100101000110001001011100101100101001001111101100101100100011100100110101011011110000100010011100010111101001010001001100100100011111011100101110110110001111000110010000101010111111100101111011001100110011000101000100010011001101101110011111010011111001111111101111001100000011100011010010010011011110001110001000011111000001100010101010111011011000 1001011001011110011011101100110101101111000010101110001110100100101110011010111010001011110110000101010101000001000110101100010101011001000011010001011010100010111111011101111111100110111010010111001000100000100110100110011001010111010001101010001011001000110001111101010110110001011101111111110100100111011011111110011111110100101101000111111010010010001011001001110010101000111101000100111001000001 0001111000101101101101111110000000101111000101011101000101110001100011111001111111110111100111011011011010001100000001111111110101001100110010010000001110100100011011001100010110011110100100110101001100110001101110110010100110110111111011111000110001100011100100100000101110101010001001000111011100011011110001011110010111100000101010001010010001101001000100000110010001011011101011011111000010100100 1111011011111000010000000110011100001101110110000110110101101000011011101011110110101010001000111101101000111100011000011001011000001101110101010010101011011010000011011100101000111010100000001101010011110010011010011010101000011001010001100111010010001101111111110101011100000000101110011110010101001101000011100000011001101100111010000100101110001111010101101000011000101010101101011100011101001101 0000010000101111111110110110110111010111010011111001100101101111101000101110101110110000111010110111000101110000101110100111010111000001000011111001111100010111100101001011111100101100111010010001111001110110100000000100011011010000101010100110100110100100101011001000001000010001111111000111101010110110110101000101110001110000010100001111110100011101010100101000010101011100001000011111010111011001 1101110011010100101000000111000010110100000111001100111011100001011111011010000001001000011010110110011001010010001001101011001001010010111010011010111100110001101110001100110100011111000101010110110111101000000000110011111110000100010011101001101110110110000001000111000011001011011000111011100011111110101101100010111011100000010010011110110100110110101101011011110100110001000010110000010100101000 1111101011001011010111100111011001100001111010110111110111100000011010110110011110110101111010001000001011110110001101110000000000101100011000100101100111000101011001100001000001000010000011010001010011100001100001110100001001001101101100010110100110001011110001110000100100100000010001001010001100101110000100111000011101001101101001001100011100010010000100101101000001010000100010011010011101001011 0110111101110110101100100001000111101101001010000110111110011111101111101010000110011111001010110000100010001010000001010100110000100000000101000110011100100101010011001100010001010010110111010110010100101001000001100000010100101000111001100110011110100100000101011001000011100000001001100101100100010010001101001100110101111110001111010001000011100100100101000001011110111011000101100000000000001101 1101010010011100101101000110101111011001011001000101101100011111001100101101000110011110111110001100011101011010111111001100110110000110101001000011011011110100110100001101101111011000001100110010011110111011111110010001100111101111000111101001100111011100111001011111110011100101001111011001001100100001000001110011100111011101111010101101000111111111111111000110100000000100101001011101011011110010 1101001111100000111110100110001001100100100111100001111001010001000111010111100001111111000111101011101000001010010000000100101100010000010001011101011001011110110110011001001110001101101110001001011100101011110001100010101110111001000000101101111100111010001000001010000110110101111110100001000000101100110111000010000100100110110000110101011101110110000000110000011111010100010110110111010100110011 0000010010001001110001100000010100000111010001110110101000101000011010100001111100001011110111011001101111010001001101111001110111000100001001101010100000111011001010101100010111101000010011101101110101000000101110011010101111000000110000011010011111110000111011001001011101101111100111110000000101011100101001100100101011010111111011010000000100101010101000001000100111011000011011100110000010101110 0011001001011000111010011111101001010100011110101111110001010000011111000100001010001100100101000110000000001110001111100100100010111111000000100100000101010011011001001110010011011101101000000111111001110001110110111110000111001010000111111010100110101000001000001101011110000100010110001111001010111010110100001100010000001110011101000010010111011111110011111100111100000111110100110110110101010101 0101111000101011101111011010011000011101000111011010100010101000011000011100011100011100011100000101011001101001101101010001110100000110011011110010010110111111011100010011010011011011110110111011111100101010000111000011001101011100000000011000001000111100010100001000101111000101010010011101111000011011100001000011011100100110110001101101100001000100001110001011100001111000001111100100000111000111 0000101110111111001011110110111000010010011001100000000011101101100100010100010110110000101010011011000011101011101101110101010100000110111100010111000110001111001011010100110010101111100101110110111001010101111110100100100010011110110111010110101101010101011000101010011001001101010010110110001000000001100000010010110100101011101111011011011111001010001000110010001100100100011111101000100111101000 1011100111100101010000011001111011010100001001011111000001001100110101011110001100101000111011111010010010100100001011101010000110011000000110000010101000001110110000110001110101000001000110000110010111001011110101000111100101000011011011010111000010011101001111011100101110001001011000101011011000001110010000010000100100001111010011000100010011010001101110101110000110010110111010011111010000011000 1100001110111101110001000000100011100101000001000001111010101011001001101000010011110110000000011001101111001101101001000000001101101010000011001111111001100001111011100001101010101111001001011000011111010101111001100101111101001010111011101000000010101110111100111000101100110001101111110001111000111000110000011000110011000111110000101001000100000101100011001110100010110001110011010101101011000110 0011001110101100111010010011111100111011111000111001111100001000101000001010100010000101001001110100110101111111000010110101101011101111100101000011000111100100101100110100001011010011111110100110101100100011000011100101110010011001100110111111000111001100101010100100110010100010110110011000001100111010010110101100001111100010011011000000001110000101010110110011100111111001011011100111111110101000 1011010011011011011010000110011101011111101101101000110100110010111111011101100101010011000001010101110101010110110110000111011101010110101100000101001101101110001101110010010000001101111101000101010100101100000011011101110111111010001011000100011100011000011010011110010000010011001010101000100110100000000011101110110111000101001101111110011011101000111100111000010110100100100111001100000100111100 0101110011010110100010110110100100100101101001111110010111000101000110101101110110000110110111001100011010011110100000101111100111100010101011100100000100101001011111010101010101101100011110000010110000101110100101011011110000101011011010010110011001100000010001011110001010110001110101001000001011110010101001000010011110010000010111010001011100001101001001001000111100001110000001001101010101111110 1101100110101011011010000000010010000011100011010100001111011011101000010110111010100101100001010100111100011110000001110101000110011011100000000110011101011001100011100010011100100111001000111100000110011001010101111100001111110100011001111110110100100100111011000110011000101010011001000001110010000001101100000101001011100000100000011010111000111101101011100011110011000000110111011011101011110010 1110000100011100001111110101010000011001011101001011110110001011100000110100000011110010000000100110011001000100110110100000000000000110011100000100101010111100111011101010000110100101000101100010110110011111001100011111111010110100000110001001111100100111111011011010011010110000001000001110010111000000010000011110110110111111000100001111010010110101110101000111000000011000010110010110100001011010 1010101111111101110001011011010000011011010010111101101101111100001000100001001001000101000001011001011000001001000100000011010011111100110001101100100110000111001110110110110000101011001010010001011100001110011110001000001001000100001111100000111111000011011100100011000001010000000000111111010110011011101001011000010000000010101000110010010101101101010111100010111000000011000101010011001101100110 1000100111000010100001010110110000010100000101001101000100010110000101111100011011000011111010010111111100010111011010011101101011010111110010100010011010111000010101101110010011010101100011100111000001000100010111111101101000001000100111101001101110010101001110010010101100001100110001110101010010001101101011100011110100111001001101001100110000001001011000111111000001000001100101000001001011010100 1011000110111111111111101100001110010100001110101001011001001110000000111011011010001111100010111000000011110110100110000111000000000110110110010100010000100001111000111100100000010010010010000100100110100001110000101101110001110000110000100001000010101010010001100001110001110110110101011100000111010010111101101011000111001111100001010111010100001011011011111110101111110010110101001111000001100100 1000010110001101010010110110010111101100100110000011000000111110111001001111110110100111110000101111110000110100010111001111101000011110100110000111010101000100101000111011101011010100111111010111010000110001101100001100001111001110101100011101101000100100010100100010111011010001001011011111001100011101011100111100110001000110110101101111011101100101101100001111111010000010000100100010011110111100 1110011011110010101011110110100011010000000110111001010101011011111100001010000110000000110100101101010000011100100100100000000000101100101110000100010001000101111011100111100111101000101001100101000100101111111001100011111110101010010011010110110011111000000000000001010100000011100010010011100010000001100111011111011011111111111010110101010010101000000011010101101010111001100100110100110111001010 0000110011101010111111000110001001001001100100011101000010110111011000001100111010011111001000100001110000011111001011101010101010010001100001011100111010000000100011000111010011101000011011101101010111110101001001001110100010101111010101001010011101000101011101001001110101001100001101000111110111000011011011111111000011100100011011001111101100111101010111000011100001100010100000101111111000110110 0111110110000101000110101101100101110011101010010111110001011110000001100000110110000111100101010110010011110101011000000101010010001001111101100001000011101011100110110110011010010000110111011001110000011001011110011010010010100010001000000111100010001010011110010101001111001101111001101101011001010010011011110010011111110010010011100111011111011110111010001001010101011010100011000000000101001000 0101001010001100011000000011101110010111111110101110000010111101100010111001110111100111011100010111000011000110100100001111100010000110000001000101011000010111011010001110000010001001111011111010101001100011010111101000111000000011011101111111000110100000100101100110100000101001111010011110111100010100110001100001110110010000010001000001101000100101101101011010100110000011011001010101001000000011 1100000000100011001000110110110101001010001011111001110011010111111101000000101100100000100001111111010010110011100100010110101111001101000010101001100101011110101100101000111001100111101101100001001101010011001101110100010000011000011011011100011001101100011010111010101100000100111110001000011101101100000000001100101000111010010010110100001100110110011010100110010010010101000111101110011110111010 1111101010010101101100010111001010110100011010001011001010100111001110011000001000101001111101110110001000101010010001010001110101100100111110100011111011001011010010001100000011110001001011100001011111000001101111101001010011100011100011011110100001001100101110100110011100001011100000111101111001110110011001100000000111100010111110100110110000001000110010011101011011110111101001111111000101001110 1011101011000010000101111001011010000001011011101011110110100011110010011011110111011010101011101011100000110001001010110110101000101100000010001100111000100000000010110011111010101110001101111000100111100111111011000001100111110000110111001010100111101011110011001111000000100110001110110011001111011110111101011101011110010110101011000001000110011101110000000101101111001000101011001011101111010111 1011000001100101010111011100011000100001010110000101110100001000000001101000011101110000110000010110110110001000001101111000001011000111111101110010000110011111001010110010100000000010101010011011000100100001111101101001110001000000101110101111010110100101011010001000111111010000101000010000110111111110100111001110101111101001000000010111001100000110010111110111101100101001101111011010101001010101 1111001011111101001111001010000001101100000110011010101100000110111001011000000111111101111011110101010011111101110001010001010111110001111011000011110010001000111110111111111110111101110011110001010100111110101000111000010111111011101100111010111110101011111110100100010000110111100111100100010011111001010100000111100000101101011101110101010011100010111110000111011000001011010111001100000111010100 1100111010000110011110111100011100001000000110111000001101000011111110111000010110110000010011000011010100111000100001110101100111101100110000011011111001100010011101111111010100001010011010100100101110101010101101001010111110101110111011101111001110011101001010111010010011010100111011010111111001000110101010111011010100101100010101101100110110101010110101110111011110000110101001011011110101011111 0000110101011000010110111100000010010000010100001100101001100000011111111010010110010000101100101111110110100111110110010001110001000011111111111100000001100000011000110111001111110110000100000000001100011010010010000111100010100100000111111010001010101100101011001101001010011110100000001000111111011001111011110110001111100000010111100110110001000000110100111111001100101111100111110101011010111001 0011001101111101101010111110110110111011001001110011100111101000011110110010011000001000001100100001001001011000101000100001111000101111100000010110101010110110000110111111010110010111011000010001111110101100101011101100110110110101000101010110110111111100111000110100111111000111111001010011000100010000110000101010110001010000111000011110111000001101100101100011011011010000111101011011001110101101 1000111110011000000001101011101101100100111011010111111100010101101100110010000100100000100001101101001111101011111110101101010001011000100010100000011001101110110101101110100111111100000011000101001010011101000000111000011101111111001100100100111101010110011010001100110000101010110101000101111111100010000101110111000011100110011010000011110011001101101011001010101001100000001010101100011111010110 0101100011100010101001000110001111000000111110001111001101111100001111111101010110110100010010110111000111010011011101001110110111110011001000100111001010000110100010011110000010100000010001000100101101010010011010010010111010000111011001111101110100001001010000001110101000110111100110100011010000001110010000110010101001101001010000100010011011110101000110010111110001010001001000001010000111111101 1001010110011110101010001001110010110111101111011110000011110101111100101000100011101000110000000000011101111001101000011111011011101001101111000010001110010101011100011100100011110111100101111001100101011100000110100011101000100011001011000110010111010011001001111110010010101000001000101101011000100100101011110110100000011110011010010110111010000010110011000111000111001010100111001011100000010100 1000010011010011100100111111100011000100101011110101010110110000011010111100000111100110111110011100101111011101111110100000100101001001100101101000111011001001100010110010001001101111101100100100110111111101011111101010011010110100000001011101110010001001000110100001011111001011011111001101010010001110001101000011100001100110000110000011101000010110110100111101010011110010101110001000100011110010 1000001010001110001001001010010010100110010111100000000010100111101001111000001001001000010011110000100000111000011001100011010101100100111100001100000111011100000111010001110111100100001001001110010011001101101000001100000011100100001100010111101101000000011001100111111011001000110010101111001011000000111010110111100101001110110011011001010001010001110110101011100001010010111110100010100001001001 1111100100111111011101110001100010011011101100010001110001110010000001101001100001011111011100110101011011101010010000010010011000010101100010110100011011010011100110010001010001111011101001100000100101111110010000111001001010100000111010011101010111111001010001111110101110010001100011101011100100000011010011011111000100000110000100001100110010110100101000000001100010110110010000110010100011000101 1111110101000100110101111100010011111011011100111110101101001110010101100100111000011101010110110011111010100101001100000110010000011110101111000001101111011000001101010010111101001111000101000011001100010001010001011001000111010010010101111001001100010000000100110010111111111111110111000111001100000100111110101111010000000101000000111001010000001000001010111101000101111110100000100001001100000010 0011001100010010101110100100110100010000101110010011101111111010100001001111010000000011101010000010010001000110110111010110001101100001101011011110010101011101011010000001011111011001011010010100011110010011011010101000011000111110000010110011001010011110111010001010000011101010010000101100110110001100110101010010000100010001111010100101101110100001000001011000000011001111100110010101101010001010 0010111100111000110111100110110001101001101110100011011001101111111000110010001010100011011000101000101100001101011000011011110110100000111101111010100100110010001010100010101101011010101100101111000101111001100101101110001010111101010101001010001110000000011010000011101100101001111110001010110101001000010001111010110011110110010100011100010101101010111001100101001111111110010011110001011001010000 0010001001010011011110110010000011001010000100110111110010101100111101101100110011111000011011100100011101110110101000110111111011101001101100011100111101100011101111010111000110111100001111010011100010111011110110110100011100011101110000110010000111000010100001000001110000110010000010011111110101000111011011011000100110011111000010100100010100011100010111100010110010011000010001011011010100100111 0110111010011001111001100000110101001110100010110010110110001010010000110000111111010001010000010001110110011010010111001111001110000110010000100110101101110011101000000010111010000110101000110100111000111011000011011101010000011100010110111010010001010110010010101010001101011111111100100010000010000010111011100101110111011010101110011001100110110100100010010110100111000000010011101100010001011001 0111100100010100001111101110011001111000110110011001001110000011100101110110000100110011011111001001100110001110110101011100010011110101111001111010110011101000001000110111010001010010110110101001110000111000011110010010100001100100000101010001001111101110000001011100010111101001110011010111111101101001000111001101101001010001010010010110100111100011111011001010100001110000010001111101111110000100 0101101110011101011110110110011001100100000011101000100011101111011010011110110010110111111001101000011111010011100110110111010100000110000011111111011000101101000010110110100000000010001111110100110011111000001110101010010010001010001011110100110101000010000110001100001101100110011001001111010011111101111001100000100111100001110001101111011111000010111000010010000101010111000110010001010010110110 1100101100100110000110111010011010000011100111000000010011000111000011011101100010110100000101011110000001010011101001110001110110011100010010010010110111110101000100011010000010011111011111111011101110011010111100100100011000001110110110110011100001010111101011010101110100001110110001000001100001000011011101001011010101110001111011000111000101100101110100101110100101000111001011000001110011101101 1010110010110011110110110011001001110001010100110010101010101100101010101000000000000100100000101011000010110100111001011110001100110001011100010011110101110011010101111010111001111101011010101011110011111111010101001110101010000101011000001000011110101011011010101001101100010011111000000111000110010100011000100000001101101100111000001000010111001100000000001111100100110001000011010011101010011001 1101110010111001001100010100110111100111100100001000110100101010001000010101101101001111101011011000101111001101111001011101010000110000101000111100100011000100011010000000011101010101010010111110011100110111100101101010111111000011001000101000000100111010011111101100110100100011110100110010010011000011111111101110111101111001000011110000110000101001000101110001011010011000110110001011001001100001 1110110000011000110001100100101001101110000101010110011101000100110000110110001011100001101101001010110000000110101011011011010111111111100010010110011001011011101000011001000111110110011101100010001011111101011100111111011010110011111110111100010010111110001010111110111101110111001111110110011110011011000011011110001011000111101100111101000011000001110111100000100101111100001111111001011100011010 1011001100111110000110000000011101101000000011000010001010001100000101100100101111001101101001101001010000000101101001111110110000000101110001100000111001100011111011010100011011000111100000100110101110000011011000011111001001011000101011011101010011001111001110101110100000110101110010101110100011110000011000010011110001010011000010011010000101110001101010101110001111111100001111101000110010111011 1001010111110001111010111110011100101101010010010011011010011101110110110101011111011111000110010100100011110100001011111101110110100011001100000111011100111011101100100101101100100110011011000100010001101011011001110101110100001010101100111100101000110101010111001010111100100111011000011111101111001111010111101001100111100101011100000111101110011100001001111110001110110000100101100111011110110000 0001001000101000101000000000111101000101111111001010001101100000110011000110111111110100000100111011100111101101110110010001001001010100100010110110010101111001110111100100011011101010110000011110011111010011001011000011010010101010110000000000011101011100010010100010000100001101011100100100110011011010001010010011101110010110010011100000101101001111100100001011000010011000101001101011111111100111 0110111100000010010011010111110010101011000111101110110011010101000101100100011001111000010000000010111010101010000111111100011001000000000100010100000111100011100001100011000010001001101111011001000001110010101000001001100000010111010110111010110000101001000100101110010001111101110010010001110110100111101010101000111000110101110100110101111000110111001000000000010110110111111101011110111101111110 0001110010110011010101110011011111111111001101100011110101001010100101001000011111101111011001011010100011011110011000101110110110111101111100100010001101011010110111010001100001010110001011000111011101001000111111001000101101100001101101111110101111101100011110110110110001010010111101100110011000110000001101101000011001101101010100011000100110000101111000111001101100001010000011001101101000110000 1011111000110101101101100101100100011100111000111101000111111000001001000001100000000110110110011010111010010010101010110101100110111010010110101101110010100101010000001101011101111000001110001110000101111110000000101000111001111010001000100011111110111011010000101010011100011101010001110001100000011100111100111011001100101000011100111100011101001001010010010110100111001101101011010000100000100111 1011110101111011010001000001000101001001010111010110001100010000101001101100001101101100000001000110111110100000011000110000100110001000000100111110111010001000100100000000001000001011000011011110110110001111010011111011111000010101110010100110111001011101101001000111011010011111100011110110000110100111011011011101110111010110110111111101010011011111110101010101111111010001001100100001001011101101 1110111011001010000111110000111011011101111101101100001100001110001011100000111101000101100010010100011110010111011001111010100001101111010101010001010010001100011001011010110001001101110001101100111100010100010001011001100111011000111111011011001000001101110101100111101110100101101110001100101111111101110101100001001110111111100111101010100101110001011011101100100100010111011000000100001101100001 1101110101011101100000101011011100011010110011010100011000011011000101110100101101010101100011001101011110101100000001011000000011011000011011001001101100010010111011001000110110001100001111101001010101001101111011101111110011100001100110100011010111000001100100100000101001110100010111001110100000000001111001101100110010101010100100010111000010111000110100011010101010101100101011001111111101101010 1110111001011010101111110101101010111100111100011101111010010100101110010110111000011011011000111101110101000000001101001000110011100001100101001011110110011001010100100110001110100111100110001110110000000010000100011011010100000001111101010100001001000110110011000010000111111101101011111011010101011011000100100111010001010001111001010011111111011001111000101010100110010010111001101101100010001001 1000100110000100110101001110110100000010100001000001111001000111010100111000111111000000110001000100100000101101011010001000100011111100101000110100100011010000010101010111010100101011000011101001010101010100011110111111111000110010001110001011001011011011011000001110001000110101011101111101111110011110011000011110010110100001001001001010011111001100001111011011100000011000100111110100001010001001 1101000000010001001100110110100100111111000000001101000001011110111010011100111000010101111001110011000110110011010111010100111010111111001111110001000001110100100001010111001010101010101110011100111110100110001100101011010101010100001111000011000111000110100001011000010000000001111000010110100101000011010101010001111110101100110110101011111010010000100110001110001010111100010110101110000110001000 1100101111001001110010000000010000110000110100000000101111111011111010010010010000000110000110100001111001001011010100100111010011010000111011000011111110000000101001000110001111111011110110110010001000101101011010001010011000110111111000111011101100011110111010111001101000011101100110011011110111010100100100111000110111111011110101101001111111101100000111010111010101001111011011101100010111111101 0000000000100110101010001001000111110110001011000101100100010011110000110101111101000000110110000111100001101011000100100011110000011111001110101010110010101010001111011000011111011100111001101111000110001000101000001111101100011010010001011010010100101111010000010011100001001100100011111010011111011011110011011110010010110101000110101001011101011001101110101010101000101001011111100001011000100010 0111001100110100000000100001010100001111000111101101111000001111110011111000011001010100011101101101111100000011111000111010111011010010011000011110000110011010000001000010101111110111110100011011001110100111000011100011010101001100000100011101111110001001010001101011010101010110111111110101011111010111100011011110101100010010101001011010110110011010010000110110101011010001011111101101010010110000 1010110100010010000100010010001101100010101100000001101110001101011111100000011000100100010101100010001001011110001001101100001010111111000000110001001001111100011110010000000101010110001110111110111101111011110101111110011111010100110100101110101110100001101011100000100011110111111011011000000000100001011111010110101100110001111010101101010010001001001011010001111010110111110100001000100011111000 0001101010111100101010001110001001010101010011000101111001000100111001001011011111001001001011000000100101000010000001100001101111001101101011111000101001111110110001101101101100010000001111000110011110000110110101101000101110100011001011011111101011011010101111011010000011101010011001000010101111001101110110011111011101101010111000000011111100101001111101001101000000010001011100010110010110111101 1100101000011010000000001110010001001011100010101110101001111101101000001101001001111101010101010101001110110100100100001010101100000000010100111100111010010000110010101011000100011010011010000101001101010110101110101101001111111000100010010000111001111110000111110100010010001110111100100000001111111000101111011110111100010111111110010110010011111110011101011110100010001000001101011110110000101101 1101101100111110111100010010000111000111110100111011010000010001100001101101010010001110101110010011001101111110101001111011000100010111101001111100000011001011111001000011100010011111000010111100110011111111011100101010000101001010010001000010000010001000111001100001101000011111010110000001011011101100000011001110110010001001011000101000111111100100101001111011111011001001001011100001110100100111 0101001101111010111100110011001101011000010000010110110001100010111011101010011111110010100110100011100111111000100000001000010111001010001110001101011100001011000110111111101111000000001111000011111000100111111000110110101010110111001111010011111000011011000001101000110101110010000000100111000001001001010100111110001001110101101101011010100010110010111000000010111100000110100000011000101001011111 1000101001100110110001010101110000111010100011001011110111110101101101100111011000011011000111000000010110001100001000110111100000010001101000100010111100100101001100100111000000101000011101000001010100010011110101100101101001010001001011111000000001100101101010011010011101001100101000101110010111101000000000100101011111000111111100101001111110000111101110010011110001110010100010111111101000100011 1101100010011001011101001110100010010011010011111111000011011010000000100001001110111001111011110010011011110111011110110100100011110000100101110110011101000011110000110011011101011000001110100110010100010011110111000000000110111010001000010000111100111000000010110001111101111111010000001101010000001000011000110001111011000101100011110100011100101000100110110010101101100101111110110000110010000000 0011111000010010111101011111100100111111001100011001110011010001001011000001001001001100110101110110111101011010000110010010111000111000111001111010010011101010011011000101101000001001111000110100101011011010011111110010110001010010110001101001001011110001011011010101010110110011110001101100011101010011100100010000101011101100100001010010011100110011010101110101000100111010001001101001000111101010 1010100001111000100111110101111100101010000110111111110001101001010101011100110101010010101010110111111100000011010111100010011111001000001111110011101110101011000111010010101110010011011110110101110010000001100101011001100011110100101011101001000011100101110110110000111101100011111010100111011000011101011100001011111100010000001110100011010100000111011000110011101101111001001011011101010110110110 0101101001111111001011101000011111101011101110000010001101001000001011010101011111000011101010011010011111000000111111101100000100100111101101010101101011101011111101001010011110111110110101100111011100001010000101000101011011010000110011001111110100110110111011000001111100010111100100111011110101001010000110011001001111100101011010100011001110101110110111100111101011110110111110110000111110101111 0001100110011010001110110000111100110010111001001100100010111000001111111100011110100101101001000111101100011000111011000100110010100001111010000111011110001011101110010101001100100101100110000100101111100011111001011101111000110110110110101000100100010101000101000000011010101100000101011010011111111111110101110101000110000000011111111100111010010001101111011110101000110100010101111100101110011111
cTrader Algo

Symbol【cAlgo API】

10/27/2020 1/28/2023

4年以上前の記事です。内容が古くなっている可能性があります。

通貨ペア情報取得用

Robotクラス(本体)が持つプロパティSymbolから様々な通貨ペアの情報が取得できます。SymbolのインターフェースはSymbolInfoインターフェースを継承しています。

 

SymbolInfoインターフェース

通貨ペアの基本情報を参照するためのインターフェースです。

public interface SymbolInfo

関連するインターフェース:Symbol

 

プロパティ
(string) Name

通貨ペアの名前を取得します。”EURUSD”とか。これをそのまま発注などに使用します。

(int) Digits

価格の小数点以下の桁数を取得します。

(double) PipSize

1pipあたりの価格を取得します。

(double) PipValue

1pipあたりの価格を口座通貨額に換算して取得します。

(double) TickSize

値動きの最小幅を取得します。

(double) TickValue

値動きの最小幅を口座通貨額に換算して取得します。

(double) VolumeInUnitsMax

最大発注通貨量を取得します。

(double) VolumeInUnitsMin

最小発注通貨量を取得します。

(double) VolumeInUnitsStep

発注通貨量の最小増減幅を取得します。

(IReadOnlyList<LeverageTier>) DynamicLeverage

通貨ペアの通貨量別のレバレッジを取得します。

(double) LotSize

1ロット当たりの通貨量を取得します。

(MarketHours) MarketHours

マーケットが開いてる時間を取得します。FXだけなら気にしなくていいです。

(string) Description

通貨の説明を取得します。EURUSDなら”Euro vs US Dollar”とかになります。

(long) Id

IDを取得します。使いません。

 

(以下はcTrader4.5で追加)

(double) Commission

トレード時の片道手数料を取得します。(単位はCommisionType次第)

(SymbolCommissionType)  CommissionType

手数料タイプを取得します。

(double) SwapLong

買いポジション保有時のスワップ金額を取得します。

(double) SwapShort

売りポジション保有時のスワップ金額を取得します。

(DayOfWeek?) Swap3DaysRollOver

スワップ3倍付の曜日を取得します。

(double) MinStopLossDistance

最小のストップロス距離を取得します。(MT4で「ストップレベル」と呼ばれてるやつです)

(double) MinTakeProfitDistance

最小のテイクプロフィット距離を取得します。

(SymbolMinDistanceType) MinDistanceType

上記Min~Disanceの単位を取得します。PipsもしくはPercentageを返します。

(Asset) BaseAsset

通貨ペアのベース通貨を取得します。(EURUSDならEURの部分)

(Asset) QuoteAsset

通貨ペアの決済通貨を取得します。(EURUSDならUSDの部分)

(double) MinCommission

最低手数料を取得します。単位はMinCommissionAssetによります。

(SymbolMinCommissionType) MinCommissionType

最低手数料の単位を取得します。AssetもしくはQuoteAssetを返します。Assetなら単位は口座通貨、QuoteAssetなら単位は決済通貨(EURGBPならポンド)になります。

(bool) IsTradingEnable

通貨ペアがトレード可能かどうかを取得します。

(SymbolTradingMode) TradingMode

通貨ペアのトレードモードを返します。FullAccess(トレード可能)か、CloseOnly(決済のみ可能)か、DisabledWithPendingOrderExecution(待機注文のみ執行可能)か、FullyDisabled(トレード不可)のいずれかを返します。

(int) GracePeriod

スワップフリー口座でポジションを取得してから手数料がかからない日数を取得します。

(double) AdministrativeCharge

スワップフリー口座でポジション維持にかかる手数料を取得します。

(DayOfWeek?) AdministrativeCharge3DaysRollOver

スワップフリー口座でポジション維持にかかる手数料が3倍になる曜日を取得します。

(double)PnLConversionFeeRate

Gets the symbol profit and loss conversion fee rate… だそうです。(意味わからん)

 

 

 

メソッド
(double) NormalizeVolumeInUnits(double volume[, RoundingMode roundingMode])

volumeを発注可能な量に調整して返します。例えばvolumeに12345を渡すと、(VolumeInUnitsStepが1000なら)12000が返ってきます。最低でもVolumeInUnitsMinが返りますので0やマイナスの値渡しても大丈夫です。

逆に言えばVolume計算値がマイナスだったときは発注しないような想定のプログラムだった場合でもこのメソッド通したら発注できてしまうので注意が必要です。defaultはToNearest。

(double) QuantityToVolumeInUnits(double quantity)

ロット数を通貨量に変換します。quantitiy*LotSizeが返ってきます。

(double) VolumeInUnitsToQuantity(double volume)

通貨量をロット数に変換します。volume/LotSizeが返ってきます。

(double) GetEstimatedMargin(TradeType tradeType, double volume)

(cTrader4.5以降) トレード方向と数量から必要証拠金料を取得します。 

(double) AmountRisked(double volume, double stopLossInPIps)

(cTrader4.6以降) 指定ボリュームで指定Pipsにストップを置く場合の損失額を返します。当然決済時の為替レートによっても変わるため、あくまで目安です。

 

LeverageTierインターフェース

SymbolInfoDynamicLeverageの要素です。発注量によって異なる最大レバレッジを参照します。

public interface LeverageTier

 

プロパティ
(double) Leverage

最大レバレッジを取得します。

(double)Volume

Leverageが有効な最大通貨量を取得します。(DynamicLeverageの最後の要素だけ扱いが違うかも?)

 

サンプルコード
Print("この口座の最大レバレッジは{0}倍", Account.PreciseLeverage);
Print("最大発注数は{0}通貨", Symbol.VolumeInUnitsMax);
Print("{0}の通貨量別レバレッジ", SymbolName);
foreach (var lt in Symbol.DynamicLeverage) {
    var lots = Symbol.VolumeInUnitsToQuantity(lt.Volume);
    if (lt != Symbol.DynamicLeverage.Last()) {
        Print("{0:#,0}通貨({1:#,0}Lots)までは最大レバレッジ{2}倍", lt.Volume, lots, lt.Leverage);
    } else {
        Print("{0:#,0}通貨({1:#,0}Lots)以上は最大レバレッジ{2}倍?", lt.Volume, lots, lt.Leverage);

    }
}

実行してみると最大レバレッジが表示されます。

 

 

Symbolインターフェース

通貨ペアの基本情報に加え、BidやAskなどリアルタイムの情報を参照するためのインターフェースです。

public interface Symbol : SymbolInfo

SymbolInfoから継承されており、リアルタイムの情報を参照するためのメンバが追加されています。

 

プロパティ
(double) Ask

Ask値 (買う場合の価格) を取得します。

(double) Bid

Bid値 (売る場合の価格) を取得します。

(double) Spread

スプレッド (AskとBidの差) を取得します。Pipsじゃなく純粋な価格差です。

(double) UnrealizedGrossProfit

保有中ポジションの総利益を取得します。

(double) UnrealizedNetProfit

保有中ポジションのスワップ、手数料を加味した総利益を取得します。

 

SymbolInfoのプロパティ

Name、Digits、PipSize、PipValue、VolumeInUnitsMax、VolumeInUnitsMinなど。上記参照。

 

メソッド
SymbolInfoのメソッド

NormalizeVolumeInUnits、QuantityToVolumeInUnits、VolumeInUnitsToQuantity。

 

サンプルコード

Pips関連の計算にSymbol.PipSizeはとにかくよく使います。利益額や損失額の計算となるとSymbol.PipValueも結構使います。

// 1本前のローソク足の高値をストップロスに指定して売り発注
// 最大損失が10,000円以内におさまるようエントリーボリュームを調整する

// 最大損失とストップロスPipsを設定
double maxLoss = 10000;
var stopLossPips = Math.Round((Bars.Last(1).High - Bid)/Symbol.PipSize, 1);
var spreadPips = Symbol.Spread / Symbol.PipSize;

// stopLossPipsがスプレッド以下だったらなにもせず止める
if (stopLossPips < spreadPips) Stop();

// volumeを計算する
var volume = maxLoss / (Symbol.PipValue * (stopLossPips + spreadPips));
Print("maxLoss={0}, pipvalue={1}, losspips={2}", maxLoss, Symbol.PipValue, stopLossPips);
Print(volume);
volume = Symbol.NormalizeVolumeInUnits(volume, RoundingMode.Down);

//発注
ExecuteMarketOrder(TradeType.Sell, SymbolName, volume, "SymbolSampleCode", stopLossPips, null);

デモ口座で試してみてください。手数料分はずれますが、ストップロス位置で最大損失くらいになるようエントリーされるのが確認できると思います。

 

 

RoundingMode列挙型

Symbol.NormalizeVolumeInUnitsでの計算方式を表す列挙型です。

 

ToNearest 近い値。奇数丸めっぽいです。2500も3500も3000になります。
Down 切り捨て。NormalizeVolumeInUnits(volume, RoundingMode.Down) の結果は指定したvolumeよりも小さい数値になります。
Up 切り上げ。NormalizeVolumeInUnits(volume, RoundingMode.Up) の結果はvolumeよりも大きい数値になります。

 

 

SymbolCommissionType列挙型

手数料の計算方式を表す列挙型です。

UsdPerMillionVolume 100万通貨(USD)あたりで計算され、単位はUSDです。
UsdPerOneLot 1ロットあたり計算され単位はUSDです。
PercentageOfTradingVolume トレード総量の比率(%)で計算されます。
QuoteCurrencyPerOneLot 1ロットあたりで計算され、単位は決済通貨です。

たとえばUSDCADでCommisionが10、CommisionTypeが”UsdPerMillionVolume”の場合、100万ドルの取引あたり10ドルの手数料ということなので、1lot(10万通貨)トレードしたときの手数料は片道1ドルということになります。

少しわかりにくいですが、GBPUSDで同じ値だった場合は手数料は1lot片道1ポンドになります。(10万通貨=10万ポンド=約12万ドル=手数料は(100万ドルあたり10ドルなので)約1.2ドル=手数料は1ポンド)


まだコメントはありません

新しいコメント

コメントは承認後に公開されます。承認まで次のコメントは投稿できません。

cTrader's Life

© 2025 ajinori